C ++: Во сколько способов компилятор оптимизирует наш код? - PullRequest
1 голос
/ 03 декабря 2010

.

Я хотел бы знать все возможные (или хотя бы популярные) способы, которыми компиляторы могут оптимизировать наш код, написанный на C ++? Также хотелось бы узнать, как именно проводится оптимизация (в каждом случае)!

Пока я знаю две оптимизации, а именно. Оптимизация пустой базы (EBO) и оптимизация возвращаемых значений (RVO). Что еще там? Я слышал об оптимизации "const", оптимизации "неиспользуемая переменная". Что они?

.

Ответы [ 3 ]

6 голосов
/ 03 декабря 2010

Все возможно способов? Конечно, ты шутишь. Для этого посмотрите многолетние исследования и практику компиляторов.

Для конкретных примеров посмотрите каждый из вариантов здесь: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

5 голосов
/ 03 декабря 2010

Из стандартных документов., Раздел 1.9 ,

4) Это положение иногда называют правилом «как если бы», потому что реализация свободна дляигнорировать любое требование настоящего международного стандарта, если в результате будет выполнено требование , насколько это можно определить из наблюдаемого поведения программы.Например, фактическая реализация не должна оценивать часть выражения, если она может сделать вывод, что ее значение не используется и что не возникает никаких побочных эффектов, влияющих на наблюдаемое поведение программы.

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

4 голосов
/ 03 декабря 2010

Невероятно широкий, потому что есть много оптимизаций, и авторы компиляторов всегда придумывают больше.Есть тонны из них, некоторые оптимизируют для времени выполнения, другие оптимизируют для размера двоичного файла.Многие из них не являются специально C ++, общие методы оптимизации компилятора реализованы для многих компиляторов / интерпретаторов для многих разных языков.

Просто несколько:

Дополнительная информация:

...