Оптимизация кода
С помощью оптимизации исполняемого файла можно добиться баланса между высокой скоростью выполнения и небольшим размером кода. В данном разделе рассматриваются некоторые из доступных в Visual C++ механизмов, облегчающих оптимизацию кода.
Возможности языка
В следующих разделах описываются некоторые из возможностей оптимизации, доступных в языке C/C++.
Директивы pragma и ключевые слова оптимизации
Список ключевых слов и прагм, которые можно использовать в коде для повышения производительности.Параметры компилятора, упорядоченные по категориям
Список параметров компилятора /O, которые непосредственно влияют на скорость выполнения или размер кода.Декларатор ссылки Rvalue: &&
Ссылки rvalue поддерживают реализацию семантики перемещения. Применение семантик перемещения для реализации библиотек шаблонов может значительно повысить производительность приложений, в которых эти шаблоны используются.
Pragma оптимизации
Если в каком-либо оптимизированном участке кода возникают ошибки или замедление быстродействия, для отключения оптимизации для данного участка можно использовать прагму optimize.
Следует поместить код между двумя прагмами, как показано далее.
#pragma optimize("", off)
// some code here
#pragma optimize("", on)
Примеры программирования
Также можно отметить появление дополнительных предупреждений во время компиляции кода с оптимизацией. Это нормально, поскольку некоторые предупреждения относятся только к оптимизированному коду. Если принимать во внимание такие предупреждения, можно избежать многих проблем, связанных с оптимизацией.
Парадоксально, но оптимизация быстродействия программы может в отдельных случаях вызвать замедление быстродействия кода. Это происходит из-за того, что некоторые процессы оптимизации быстродействия увеличивают объем кода. Например, встраивание функций может свести к минимуму дополнительные издержки при вызове функций. Однако вследствие встраивания слишком большого объема кода размер программы может увеличиться настолько, что это приведет к увеличению числа ошибок страницы виртуальной памяти. Таким образом, увеличение быстродействия вследствие отказа от вызовов функции может привести к потерям в памяти подкачки.
В следующих разделах рассматриваются рекомендуемые методы программирования.
Рекомендации по оптимизации срочного кода
Более совершенные методы написания кода могут помочь повысить производительность. В этом разделе приведены методы написания кода, которые помогают убедиться, что срочные части кода выполняются удовлетворительно.Рекомендации по оптимизации
Общие правила оптимизации приложения.
Отладка оптимизированного кода
Вследствие того что в процессе оптимизации код, созданный компилятором, может изменяться, рекомендуется перед оптимизацией кода выполнять отладку и замерять производительность приложения.
В следующих разделах содержатся основные сведения об отладке.
В следующих разделах содержатся более подробные сведения об отладке.
В следующем наборе разделов приведена информация об оптимизации процессов построения, загрузки и выполнения кода.
При использовании имен функций без скобок () код не создается
Дополнительные сведения о, как сократить время загрузки методы библиотеки DLL, см. в разделе «позволяет оптимизировать производительность времени загрузки библиотеки DLL» в «в столбце клобуком» в «журнале MSDN» на веб-сайте Библиотека MSDN.
Дополнительные сведения о, как свернуть разбиение по страницам в приложениях см. в разделе «повышение производительности продолжитеную по времени, как средством рабочего множества» и «повышение производительности продолжитеную по времени, ровной инструментальной частью рабочего множества 2 " в столбце «Bugslayer» в «журнале MSDN» на веб-сайте Библиотека MSDN.