¿Qué es la optimización del programa?
La optimización del programa
es el proceso de modificar un programa de computadora de una manera que hace que el programa se ejecute más rápido, consuma menos recursos o generalmente funcione con un mayor nivel de eficiencia. La tarea de optimización puede ser realizada automáticamente mediante algunos compiladores de lenguaje de programación, intencionalmente utilizando un programa de optimización o manualmente por programadores que pasan a través del código fuente e intentan realizar mejoras específicas. En general, la optimización del programa se realiza con un final específico en mente, porque hay muy pocas optimizaciones generales que se pueden hacer a un programa que de alguna manera no reduce el estado optimizado de otra parte del programa, lo que significa que un programa generalmente puede optimizarse para su uso de velocidad o recursos, pero generalmente no ambos. Una complicación que puede ocurrir con algunos tipos de optimización es que muchos lenguajes de programación de alto nivel proporcionan un nivel tan grande de abstracción entre el código nativo y el lenguaje informático que puede ser la optimización.Difícil o imposible de implementar en todas las plataformas en todas las situaciones, especialmente con los idiomas interpretados que usan la compilación justo en el tiempo (JIT).
Un concepto importante en la optimización del programa es la idea de que una optimización generalmente viene con algún tipo de precio. Un ejemplo de esto es que, cuando se optimiza un código de código para ejecutarse más rápidamente, el aumento de la velocidad podría tener el precio de la legibilidad del código, el uso de la memoria, la flexibilidad del programa o una serie de otros costos. Esto significa que la optimización del programa debe ser un proceso específico, con la intención de hacer que un aspecto de un programa funcione de una mejor manera mientras está dispuesto a sacrificar la eficiencia de otros aspectos.
Se pueden realizar diferentes tipos de optimización del programa en diferentes etapas del desarrollo del programa. Durante el diseño, se puede hacer una amplia optimización asegurando que un programa parezca funcionar de manera efectiva. Cuando trabajanG Con el código fuente real, las optimizaciones pueden incluir garantizar que no haya comandos extraños, llamadas repetitivas o funciones mal escritas. En la compilación, el compilador realiza automáticamente muchas optimizaciones y puede guiarse mediante el uso de diferentes interruptores o directivas del compilador por parte del programador.
Optimizaciones automáticas, como pueden ocurrir con un compilador o un programa de optimización de dedicación, a menudo pueden involucrar trucos que son demasiado complejos para ser prácticos para los programadores humanos. Esto puede implicar instrucciones de mudanza en un programa para que se ejecuten fuera del orden originalmente escrito, pero de una manera más eficiente para el procesador. También puede implicar recursos intencionalmente cambiantes, como bloques de memoria para que puedan acceder a ellos más rápido. La mayoría de la optimización del programa ocurre automáticamente a nivel de compilador.
Una complicación con la optimización del programa repetida o agresiva es que, una vez que un programa se ha modificado para ejecutar de manera más eficiente, generalmente se vuelve más DIFficult para modificar para otros fines, como agregar funcionalidad o arreglar errores. Esto puede ocurrir cuando las optimizaciones comienzan a bloquear los comportamientos del programa establecidos que no se cambian o se adaptan fácilmente al nuevo código sin requerir que todas las optimizaciones se desanimen. Un problema más amplio es que, en muchos casos, un programa optimizado se vuelve menos legible por humanos, porque se usan trucos y atajos en lugar de solo comandos concisos y estructuras de control clásicas. Por estas razones, a menudo existe un nivel de optimización del programa en el que es aceptable detenerse, a pesar de que las modificaciones de código drástico podrían hacer que un programa funcione de manera ligeramente más eficiente.