Documente Academic
Documente Profesional
Documente Cultură
Medición de la construcción
3.1.1Resumen de rendimiento
Creemos que cuanto mejor hagamos el código, más les gustará a los clientes, sin embargo
McConnell (2004) nos menciona que “los usuarios están más interesados en las
características tangibles del programa que en la calidad del código.” (p.558), a veces los
usuarios están interesados en el rendimiento en bruto, pero solo cuando afecta a su trabajo.
Los usuarios tienden a estar más interesados en el rendimiento del programa que en el
rendimiento en bruto. La entrega de software a tiempo, la provisión de una interfaz de usuario
limpia y la evitación del tiempo de inactividad suelen ser más importantes.(McConnell, 2004,
p. 589).
Elegimos la eficiencia como una prioridad, ya sea que se ponga énfasis en la velocidad o
en el tamaño, debe considerar varias opciones antes de elegir mejorar la velocidad o el
tamaño en el nivel de código. (McConnell, 2004, p. 589).
- Diseño del programa, según McConnell (2004)”el diseño del programa incluye los
principales trazos del diseño para un solo programa, principalmente la forma en que un
programa se divide en clases.”(p. 589), esto hace difícil escribir un sistema de alto
rendimiento y otros hacen difícil no hacerlo.
Para cumplir con los objetivos de tamaño y velocidad establecemos objetivos de recursos
para subsistemas, características y clases individuales esto ayudará de diferentes maneras:
McConnell (2004) nos dice: “el diseño de los aspectos internos de las clases y las rutinas
presenta otra oportunidad para diseñar para el rendimiento.”(p.590) ya que el rendimiento
entra en juego la elección de los tipos de datos y los algoritmos, que generalmente afectan el
uso de la memoria del programa y la velocidad de ejecución.
Podemos darnos cuenta de lo que nos menciona McConnell (2004) “Reducir las líneas de
código en un lenguaje de alto nivel mejora la velocidad o el tamaño del código de máquina
resultante, ¡falso!”(p.593), ya que muchos programadores se aferran a la creencia de que si
pueden escribir código en una o dos líneas, será lo más eficiente posible.
For i = 1 to 10
a[ i ] = i
End for
La pregunta que nos podemos plantear sería estas líneas son más rápidas o más lentas que
las siguientes 10 líneas que nos permiten hacer el mismo trabajo?
a[ 1 ] = 1
a[ 2 ] = 2
a[ 3 ] = 3
a[ 4 ] = 4
a[ 5 ] = 5
a[ 6 ] = 6
a[ 7 ] = 7
a[ 8 ] = 8
a[ 9 ] = 9
a[ 10 ] = 10
Según “Las pruebas en Microsoft Visual Basic y Java han demostrado que el segundo
fragmento es al menos un 60% más rápido que el primero.”(p.593) Aquí están los números:
Tabla 01:
Las pruebas en Microsoft Visual Basic y Java
Esto ciertamente no implica que aumentar el número de líneas de código de idioma de alto
nivel siempre mejore la velocidad o reduzca el tamaño. Implica que, independientemente del
atractivo estético de escribir algo con el menor número de líneas de código, no existe una
relación predecible entre el número de líneas de código en un lenguaje de alto nivel y el
tamaño y la velocidad finales de un programa.(McConnell, 2004, p. 594).
3.1.3 Clases
Tabla 02:
Código que accede a elementos aleatorios
Según estos datos, el acceso en memoria es del orden de 1000 veces más rápido
que el acceso a datos en un archivo externo. De hecho, con el compilador de C ++
Tabla 03:
3.1.4 Medición
Debido a que las partes pequeñas de un programa usualmente consumen una parte
desproporcionada del tiempo de ejecución, se mide el código para encontrar los puntos
calientes. Una vez que haya encontrado los puntos calientes se haya optimizado, se mide el
código nuevamente para evaluar cuánto lo ha mejorado.(McConnell, 2004, p. 606)
3.1.5 Resumen del enfoque para el ajuste de código
McConnell (2004, p. 606), nos menciona que se debe seguir los siguientes pasos para
considerar si la optimización de código puede ayudar a mejoras el rendimiento de un
programa:
a) Desarrollar el software utilizando un código bien diseñado que sea fácil de entender y
modificar.
b) Si el rendimiento es pobre:
- Guarde una versión de trabajo del código para que pueda volver al "último estado
bueno conocido".
- Medir el sistema para encontrar puntos calientes.
- Determine si el rendimiento débil proviene de un diseño, tipos de datos o algoritmos
inadecuados y si el ajuste del código es apropiado.
- Afine el cuello de botella identificado en el paso (c).
- Mida cada mejora una a la vez.
- Si una mejora no mejora el código, vuelva al código guardado en el paso (a).
McConnell (2004, p. 671), nos hace mención que se puede estimar el tamaño de un
proyecto y el esfuerzo requerido para completarlo en cualquiera de varias maneras:
3.2.3 Medición
Se puede recopilar la mayoría de estas mediciones con las herramientas de software que
están disponibles actualmente. La mayoría de las mediciones no son útiles para hacer
distinciones finas entre programas, clases y rutinas. Son útiles principalmente para identificar
rutinas que son "valores atípicos"; las mediciones anormales en una rutina son una señal de
advertencia de que debe reexaminar esa rutina, verificando la calidad inusualmente
baja.(McConnell, 2004, p. 680)
- Eduque a su gerente sobre la manera correcta de hacer las cosas. Este es un trabajo
continuo porque los gerentes a menudo son promovidos, transferidos o despedidos.
- Concéntrese en los intereses de su gerente, haciendo lo que realmente quiere que haga, y
no distraiga a su gerente con detalles de implementación innecesarios. (Piense en ello como
"encapsulación" de su trabajo.)
McConnell, S. (2004). Code complete (2nd ed). Redmond, Wash: Microsoft Press.