Optimizar el código

Mediante la optimización de un archivo ejecutable, puede lograr un equilibrio entre una velocidad de ejecución rápida y un tamaño de código reducido. En este tema se describen algunos de los mecanismos que proporciona Visual Studio para ayudarle a optimizar el código.

Características del lenguaje

En los temas siguientes se describen algunas de las características de optimización del lenguaje C/C++.

Pragmas y palabras clave de optimización
Una lista de palabras clave y pragmas que puede usar en el código para mejorar el rendimiento.

Opciones del compilador por categoría
Una lista de opciones del compilador /O que afectan específicamente a la velocidad de ejecución o al tamaño del código.

Declarador de referencias rvalue: &&
Las referencias rvalue admiten la implementación de la semántica de transferencia de recursos. Si se usa la semántica de transferencia de recursos para implementar bibliotecas de plantillas, el rendimiento de las aplicaciones que usan esas plantillas puede mejorar significativamente.

La pragma "optimize"

Si una sección de código optimizada provoca errores o una ralentización, puede usar la pragma optimize para desactivar la optimización de esa sección.

Incluya el código entre dos pragmas, como se muestra a continuación:

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

Procedimientos de programación

Es posible que vea mensajes de advertencia adicionales si compila el código con optimización. Este comportamiento es el esperado, porque algunas advertencias solo corresponden a código optimizado. Puede evitar muchos problemas de optimización si tiene en cuenta estas advertencias.

Paradójicamente, la optimización de un programa para aumentar la velocidad puede hacer que el código se ejecute más despacio. Esto se debe a que algunas optimizaciones de velocidad aumentan el tamaño del código. Por ejemplo, la inserción de funciones elimina la sobrecarga de llamadas a funciones. Sin embargo, si se inserta demasiado código, puede que el programa sea tan grande que aumente el número de errores de página de memoria virtual. Por lo tanto, la velocidad obtenida al eliminar las llamadas de función puede perderse debido al intercambio de memoria.

En los temas siguientes se tratan los procedimientos de programación recomendados.

Sugerencias para mejorar código en el que la velocidad de ejecución es importante
Mejorar las técnicas de codificación puede mejorar el rendimiento. En este tema se sugieren técnicas de programación que pueden ayudarle a asegurarse de que se ejecuten correctamente las partes del código en las que es importante la velocidad de ejecución.

Procedimientos recomendados para la optimización
Proporciona instrucciones generales sobre la mejor forma de optimizar una aplicación.

Depuración de código optimizado

Dado que la optimización podría cambiar el código creado por el compilador, se recomienda depurar la aplicación, medir su rendimiento y, después, optimizar el código.

En los siguientes temas se proporciona información sobre cómo depurar compilaciones de versión.

En los temas siguientes se proporciona información sobre cómo optimizar la compilación, la carga y la ejecución del código.

En esta sección

Pragmas y palabras clave de optimización
Mejora del rendimiento del compilador
Por qué los números de punto flotante pierden precisión
Representación de punto flotante de IEEE
Sugerencias para mejorar código en el que la velocidad de ejecución es importante
El uso de un nombre de función sin () no genera código
Procedimientos recomendados para la optimización
Optimizaciones guiadas por perfiles
Variables de entrono para las optimizaciones guiadas por perfiles
PgoAutoSweep
pgomgr
pgosweep
Cómo: Combinar varios perfiles PGO en un solo perfil

Consulte también

Referencia de compilación de C/C++