пятница, 17 февраля 2017 г.

Оптимизация типов в современных компиляторах C++



С. Макконнелл в своей замечательной книге даёт рекомендацию вида "Создавайте типы с именами, отражающими их функциональность" ("Совершенный код", с. 307) и предлагает рассмотреть выделение их в классы.

По идее, это значит, что, даже для каких-нибудь типов предметной области, которые можно выразить через базовые типы языка предлагается выделять класс, чтобы ограничить его функционал и не дать написать ерунду. Логично? Логично.

С другой стороны, возникает вопрос: а какой может быть оверхед по производительности на выполнение такой рекомендации? По идее, хотелось бы, чтобы компилятор убирал все типы, которые тупо оборачивают базовые типы данных и оставлял только голые операции с базовыми типами.

Я решил проверить производительность в таком случае, как полагается, с просмотром результатов дизассемблирования и получил довольно интересные результаты.