ü Optimización de software
La optimización de software es el proceso de
modificación de un software para hacer que algún aspecto del mismo
funcione de manera más eficiente y/o utilizar menos recursos (mayor rendimiento).
En general, un programa puede ser optimizado para que se
ejecute más rápidamente, o sea capaz de operar con menos memoria u otros recursos, o consuman
menos energía.
La palabra
"optimización", comparte la misma raíz que "óptimo", es
raro que el proceso de optimización produzca un sistema verdaderamente óptimo.
El sistema optimizado típicamente sólo será óptimo en una aplicación o para una
audiencia. Se podría reducir la cantidad de tiempo que un programa se
toma para realizar alguna tarea logrando que consuma más memoria. En una
aplicación donde el espacio de la memoria es un bien escaso, se podría elegir
un algoritmo más lento con el fin de utilizar menos
memoria. A menudo no existe una solución de diseño que funcione bien en todos
los casos, en estos casos los ingenieros de hacer trades-offs para optimizar los atributos de mayor
interés. Además, el esfuerzo que se requiere para hacer una pieza de software
completamente óptima - incapaz de cualquier mejora adicional - es casi siempre
más de lo razonable que los beneficios que brinda, de modo que el proceso de
optimización puede ser detenido antes de que una solución óptima ha sido
completamente alcanzado.
Niveles de optimización:
Nivel de diseño: En el nivel más alto, el diseño puede ser optimizado
para aprovechar al máximo los recursos disponibles. La implementación de un
proyecto se beneficiará de una buena selección de algoritmos eficientes y la
aplicación de estos algoritmos se beneficiarán de la escritura de código de
buena calidad. El diseño arquitectónico de un sistema mayoritariamente afecta a
su rendimiento. La elección del algoritmo afecta la eficiencia más que
cualquier otro elemento del diseño y, desde que la elección del algoritmo suele
ser lo primero que hay que decidir, los argumentos en contra de la
"optimización prematura" temprana pueden ser difíciles de justificar.
Nivel de código fuente: Evitar la codificación de mala calidad también puede
mejorar el rendimiento, evitando ralentizaciones obvias. Después de eso, sin
embargo, algunas optimizaciones pueden disminuir el mantenimiento. Algunas
optimizaciones en la actualidad se pueden realizar por los compiladores optimizadores.
Nivel de armado: Entre el código y el nivel de compilación, directivas y flags pueden ser usados para ajustar las opciones de
rendimiento en el código fuente y el compilador respectivamente, como el uso
del preprocesador para desactivar características innecesarias de software,
o la optimización de los modelos de procesadores específicos o capacidades de
hardware.
Nivel de compilación: El uso de un compilador optimizador tiende a asegurar
que el programa ejecutable se optimiza por lo menos tanto como el compilador
puede predecir.
Nivel ensamblador: En el nivel más bajo, la escritura de código utilizando lenguaje ensamblador, diseñado
para una plataforma de hardware particular, pueden producir el código más
eficiente y compacta si el programador se aprovecha de todo el repertorio de
instrucciones de la máquina.
Tiempo de ejecución: Los compiladores just-in- time y los programadores de ensamblador pueden ser capaz de
realizar la optimización en tiempo de ejecución exdiendo la capacidad de los
compiladores estáticos, ajustando dinámicamente los parámetros de acuerdo con
la entrada actual u otros factores.
Optimizaciones
en dependencia e independencia de la plataforma
0 comentarios:
Publicar un comentario