Нужно читать документы C ++ для «под капотом» понимание производительности?

Чтобы точно понять, что происходит «под капотом» при написании C ++, какие документы вы бы порекомендовали?

Пока что у меня есть:

  • Документация компилятора GNU C ++ (я подумал, что было бы неплохо увидеть, что на самом деле происходит)
  • C ++ ABI (?) Спецификация

Книги:

  • Внутри объектной модели C ++
  • Эффективная серия Мейерса

0

Решение

Для того, чтобы по-настоящему понять, вы должны быть знакомы с исходным кодом G ++. Код компилятора расскажет вам многое о языке.

Для более низкого уровня понимания вы должны быть знакомы с последним стандартом C ++ (C ++ 11).

1

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

Я узнал, сначала изучив набор инструкций по сборке x86 и тайминги команд. Как только вы это узнаете, вы узнаете, во что на самом деле компилятор преобразует ваш код, и вы получите представление о том, что он может и чего не может делать. Оттуда, если бы меня интересовал конкретный кусок кода, я бы получил вывод на ассемблере от компилятора и экспериментировал с различными способами его кодирования. За эти годы я обнаружил несколько вещей … 1) компиляторы довольно хорошо оптимизируют, часто даже с кодированием чего-то несколькими различными способами, заканчивающимися одинаковым выводом сборки, 2) я часто удивляюсь, насколько много встраивания компилятор делает, и 3) Я часто удивляюсь тому, как иногда маленький кусочек кода C ++ приводит к огромному количеству выходных данных сборки. Поэтому, когда вы копируете несколько объектов наследования C ++, вы понимаете, насколько это дорого, и когда вы пишете небольшие служебные методы для защиты данных объекта, вы понимаете, насколько дорогим может быть этот инструмент. Хорошей охоты.

1

Используйте компиляцию для ассемблера: g++ -fverbose-asm -S в случае GCC и родственных переключателей в других компиляторах. Это настолько близко к «под капотом», насколько это возможно.

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