Оптимизация кода
С помощью оптимизации исполняемого файла можно добиться баланса между высокой скоростью выполнения и небольшим размером кода.В данном разделе рассматриваются некоторые из доступных в Visual C++ механизмов, облегчающих оптимизацию кода.
Возможности языка
В следующих разделах описываются некоторые из возможностей оптимизации, доступных в языке C/C++.
Директивы pragma и ключевые слова оптимизации
Список ключевых слов и прагм, которые можно использовать в коде для повышения производительности.Параметры компилятора, упорядоченные по категориям
Список параметров компилятора /O, которые непосредственно влияют на скорость выполнения или размер кода.Декларатор ссылки Rvalue: &&
Ссылки rvalue поддерживают реализацию семантики перемещения.Применение семантик перемещения для реализации библиотек шаблонов может значительно повысить производительность приложений, в которых эти шаблоны используются.
Pragma оптимизации
Если в каком-либо оптимизированном участке кода возникают ошибки или замедление быстродействия, для отключения оптимизации для данного участка можно использовать прагму optimize.
Следует поместить код между двумя прагмами, как показано далее.
#pragma optimize("", off)
// some code here
#pragma optimize("", on)
Примеры программирования
Также можно отметить появление дополнительных предупреждений во время компиляции кода с оптимизацией.Это нормально, поскольку некоторые предупреждения относятся только к оптимизированному коду.Если принимать во внимание такие предупреждения, можно избежать многих проблем, связанных с оптимизацией.
Парадоксально, но оптимизация быстродействия программы может в отдельных случаях вызвать замедление быстродействия кода.Это происходит из-за того, что некоторые процессы оптимизации быстродействия увеличивают объем кода.Например, встраивание функций может свести к минимуму дополнительные издержки при вызове функций.Однако вследствие встраивания слишком большого объема кода размер программы может увеличиться настолько, что это приведет к увеличению числа ошибок страницы виртуальной памяти.Таким образом, увеличение быстродействия вследствие отказа от вызовов функции может привести к потерям в памяти подкачки.
В следующих разделах рассматриваются рекомендуемые методы программирования.
Рекомендации по оптимизации срочного кода
Более совершенные методы написания кода могут помочь повысить производительность.В этом разделе приведены методы написания кода, которые помогают убедиться, что срочные части кода выполняются удовлетворительно.Рекомендации по оптимизации
Общие правила оптимизации приложения.
Отладка оптимизированного кода
Вследствие того что в процессе оптимизации код, созданный компилятором, может изменяться, рекомендуется перед оптимизацией кода выполнять отладку и замерять производительность приложения.
В следующих разделах содержатся основные сведения об отладке.
В следующих разделах содержатся более подробные сведения об отладке.
В следующем наборе разделов приведена информация об оптимизации процессов построения, загрузки и выполнения кода.
При использовании имен функций без скобок () код не создается
Дополнительные сведения о о сокращении времени загрузки методов DLL см. в статье "Optimizing DLL Load Time Performance" в колонке "Under the Hood" журнала "MSDN Magazine" на веб-сайте библиотеки MSDN.
Дополнительные сведения о уменьшении объема подкачки в приложениях см. в статьях "Improving Runtime Performance with the Smooth Working Set Tool" и "Improving Runtime Performance with the Smooth Working Set Tool—Part 2" в колонке "Bugslayer" журнала "MSDN Magazine" на веб-сайте библиотеки MSDN.