Стоит ли оптимизировать определенные функции с помощью Ассемблера в программе на C / C ++? - PullRequest
12 голосов
/ 11 сентября 2009

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

Вопросы:

  1. Действительно ли стоит оптимизировать определенные функции с помощью Assembly в программе на C / C ++?

  2. Есть лидействительно достаточный выигрыш в производительности при оптимизации программы на C / C ++ с помощью Assembly на современных современных компиляторах?


Что я понимаю из опубликованных ответов, любой выигрыш, который можно получить, этоважно в определенных областях, таких как встроенные системы, мультимедийное программирование (графика, звук и т. д.).Кроме того, нужно быть способным (или иметь кого-то способного) выполнять работу на ассемблере лучше, чем современный компилятор.Выполнение действительно оптимизированного C / C ++ может занять меньше времени и может сделать достаточно хорошую работу.И последнее, изучение ассемблера может помочь понять внутреннюю механику программы и, в конце концов, сделать кого-то лучшим программистом.

Ответы [ 11 ]

1 голос
/ 11 сентября 2009

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

Это не значит, что оптимизация сборки не является оправданной. Большая часть математического и низкоуровневого интенсивного кода часто оптимизируется с помощью специальных инструкций процессора, таких как SSE * и т. Д., Для преодоления использования команд / регистров, созданных компилятором. В конце концов, человек точно знает смысл программы. Компилятор может только предполагать, что так много.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...