Optimizar el código
Actualización: noviembre 2007
La optimización es el proceso de ajuste del rendimiento de un archivo ejecutable con el fin de obtener el mejor rendimiento y el menor tamaño del código. Visual C++ proporciona los siguientes mecanismos para optimizar el código:
Puede insertar directivas pragma y palabras clave en el código fuente.
Opciones del compilador para realizar optimizaciones; vea Opciones del compilador clasificadas por categoría.
Mejorar el rendimiento de un programa
Para ver detalles sobre cómo se puede mejorar el rendimiento de un programa mediante buenas técnicas de programación, vea:
Acerca de la optimización de código
Como la optimización modifica el código creado por el compilador, es mejor optimizar el código después de haberlo probado y depurado completamente. De esta manera, puede depurar código muy parecido al código fuente escrito y olvidarse de los efectos de la optimización. Tras aplicar optimizaciones, deberá volver a probar el código. A veces, después de aplicar optimizaciones el código mostrará un comportamiento diferente. En ese caso, puede que tenga que depurar código optimizado. Vea también Problemas comunes al crear versiones de lanzamiento para obtener más información
A veces el código optimizado proporciona respuestas diferentes, no por un error, sino porque la optimización cambia el orden de los cálculos, por lo que los resultados serán un poco diferentes debido a los límites de la precisión de punto flotante.
Puede que también vea algunos mensajes de advertencia adicionales al compilar el código con optimización. Éste es el comportamiento normal, ya que algunas advertencias sólo están relacionadas con el código optimizado. Si las tiene en cuenta, podrá evitar la mayoría de los problemas relacionados con la optimización.
Paradójicamente, a veces la optimización de un programa, realizada para aumentar su velocidad de ejecución, puede hacer que el código se ejecute de forma más lenta, ya que algunas optimizaciones realizadas para ganar velocidad aumentan el tamaño del código. La inclusión de funciones inline, por ejemplo, elimina la sobrecarga de llamadas a funciones pero, si se incluye demasiado código en línea, el programa puede crecer tanto que hará que aumente el número de errores de página de la memoria virtual. Así, la velocidad ganada al eliminar las llamadas a funciones puede perderse a causa del intercambio de memoria. Por esta razón, es conveniente medir el rendimiento del programa antes y después de aplicar las optimizaciones. Para obtener directrices generales sobre la mejor forma de optimizar la aplicación, vea Procedimientos recomendados para la optimización.
La directiva pragma Optimize
Si una sección del código origina errores o ralentiza la ejecución a causa de la optimización, puede utilizar la directiva pragma optimize para desactivar la optimización en esa sección. Limite la sección de código con dos directivas pragma, de la forma siguiente:
#pragma optimize("", off)
// some code here
#pragma optimize("", on)
Otros temas
Si desea consultar otros temas sobre optimización, vea:
La utilización de un nombre de función sin () no genera código
Especificar optimizaciones del compilador para un proyecto ATL
Para obtener más información sobre cómo reducir el tiempo de carga de métodos DLL, vea el artículo " Optimizing DLL Load Time Performance ", que se encuentra en la columna " Under the Hood " de "MSDN Magazine", en MSDN Library.
Para obtener más información sobre cómo minimizar la paginación en aplicaciones, vea los artículos "Improving Runtime Performance with the Smooth Working Set Tool" e "Improving Runtime Performance with the Smooth Working Set Tool—Part 2", que se encuentran en la columna "Bugslayer" de "MSDN Magazine ", en MSDN Library.