Поделиться через


Оптимизация кода

Обновлен: Ноябрь 2007

Оптимизация представляет собой процесс настройки производительности исполняемого файла в целях обеспечения наибольшей производительности при наименьшем объеме кода. Visual C++ предоставляет следующие механизмы оптимизации кода:

Повышение производительности программы

Подробные сведения о повышении производительности программы с помощью оптимальных методов программирования см. в разделе:

Оптимизация кода

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

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

Также можно отметить появление дополнительных предупреждений во время компиляции кода с оптимизацией. Это нормально, поскольку некоторые предупреждения относятся только к оптимизированному коду. Если принимать во внимание такие предупреждения, можно избежать большинства проблем, связанных с оптимизацией.

Парадоксально, но оптимизация быстродействия программы может в отдельных случаях вызвать замедление быстродействия кода, поскольку некоторые процессы оптимизации быстродействия увеличивают объем кода. Встраивание функций, например, может свести к минимуму дополнительные издержки при вызове функций; однако вследствие встраивания слишком большого объема кода размер программы может увеличиться настолько, что это приведет к увеличению числа ошибок страницы виртуальной памяти. Таким образом, увеличение быстродействия вследствие отказа от вызовов функции может привести к потерям в памяти подкачки. По этой причине рекомендуется измерять производительность программы до и после выполнения оптимизации. Общие правила оптимизации приложения см. в разделе Рекомендации по оптимизации.

Pragma оптимизации

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

#pragma optimize("", off)
// some code here 
#pragma optimize("", on)

Дополнительные подразделы

Дополнительные подразделы по оптимизации см. в разделе:

Дополнительные сведения о сокращении времени загрузки методов DLL см. в статье "Оптимизация производительности и быстродействия загрузки DLL" в колонке "Under the Hood" в "MSDN Magazine" в Библиотеке MSDN.

Дополнительные сведения о минимизации разбиения приложений на страницы см. в статьях "Повышение производительности среды выполнения с помощью Smooth Working Set Tool" и "Повышение производительности среды выполнения с помощью Smooth Working Set Tool — часть 2" в колонке "Bugslayer" в "MSDN Magazine" в Библиотеке MSDN.

См. также

Другие ресурсы

Образец построения C/C++