Оптимизация компилятора — Могу ли я заставить класс C ++ компилироваться, используя минимальное количество места?

У меня есть класс, который я буду буквально создавать экземпляры миллиарды. Я сделал все возможное, чтобы поместить в него как можно меньше данных, и уменьшил его до 10 байт при компиляции для архитектуры x64: unsigned short int и size_t, Когда я наведите курсор мыши sizeof(myclass) (в VS), однако, он сообщает 16 байтов. Если я закомментирую одно из полей, размер класса будет таким, как вы ожидаете, 10 байтов и 2 байта соответственно.

Есть ли способ указать компилятору использовать только 10 байтов для моего класса?

1

Решение

#pragma pack может сделать ваши структуры меньше. С другой стороны, это может сделать получение данных элемента более медленным, поскольку выравнивание байтов не гарантируется. В результате компилятору потребуются дополнительные инструкции для извлечения данных из разных мест памяти. Для получения дополнительной информации, эта ссылка имеет отличный пост: #pragma pack effect

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]