C++/compilation: is it можно установить размер vptr (глобальная vtable + 2 байта индекса)

Недавно я опубликовал вопрос о накладных расходах памяти из-за виртуальности в C++. Ответы позволяют мне понять, как работают vtable и vptr. Моя проблема заключается в следующем: я работаю на суперкомпьютерах, у меня есть миллиарды некоторых объектов, и, следовательно, я должен заботиться о накладных расходах памяти из-за виртуальности. После некоторых мер, когда я использую классы с виртуальными функциями, каждый производный объект имеет свой 8-байтовый vptr. Это вовсе не ничтожно.

Интересно, есть ли в Intel icpc или g++ какая-либо конфигурация/опция/параметры для использования «глобальных» виртуальных таблиц и индексов с настраиваемой точностью вместо vptr. Потому что такая вещь позволила бы мне использовать 2-байтовый индекс (unsigned short int) вместо 8-байтового vptr для миллиардов объектов (и хорошее сокращение накладных расходов памяти). Есть ли способ сделать это (или что-то в этом роде) с параметрами компиляции?

Большое спасибо.

17
задан Vincent 12 May 2012 в 08:50
поделиться