No puedo encontrar la referencia en línea (tal vez lo leí en un libro), pero no fue un ejemplo de que algunos llaman BIOS que escribió una cadena a la pantalla.
El código que escribió la secuencia de la pantalla se comprobó para asegurarse de que la cadena no iba a salir de la pantalla y luego llamó a una función para escribir un carácter en la pantalla.
La función que escribió el carácter en la pantalla se verificó para asegurarse de que el carácter no se borre de la pantalla.
Al eliminar el código de comprobación de la función que escribió el carácter en la pantalla, se obtuvo un impulso de velocidad masivo. El era porque la impresión de cada personaje sucedía muy a menudo. También proporcionaron un método que verificaba los casos en los que la posición de la pantalla no estaba marcada antes de la llamada.
Por lo tanto, si puede verificar a un nivel alto y evitar los controles en el nivel bajo puede acelerar las cosas significativamente.
En el caso que nos proporcione, si el código está en un bucle o si hay una gran cantidad de declaraciones de registro entonces no sería un claro beneficio, ya que lo haría:
- retire la creación cadena (y el GC asociado)
- reducen la cantidad de sentencias if (aunque es muy probable que hotspote las optimice).
Yo diría que, en general, no debería agregar nada que se sabe que es costoso si hay un trabajo fácil. Claramente, esto cae en ese caso: la adición de la declaración if no es difícil de hacer, es un dolor incluirla más tarde, y proporciona una mejora definida de velocidad/memoria.
Creo que la diferencia entre esto y la optimización prematura es que se sabe que siempre es costoso, por lo que la cuestión se reduce a si se trata de un costo acumulativo que desea agregar al programa o no? El costo es bastante constante y se sabe al momento de escribir el código.
Es obvio que si el autor ha hecho esta pregunta, entonces es una llamada para que realice la optimización. Es decir. cuando se le pide que optimice un fragmento de código, no responde con las dos citas anteriores. Comprenda de dónde viene, pero no ayuda en esta situación. –
-1 de mí. odio este mantra de "no hacer la optimización". Tiene graves fallas: si su optimización * arrojará resultados (incluso trivalmente) y es casi * libre * para eso (ya que esto es así, las instrucciones 'si' son triviales) y no es complicado (y está envolviendo una declaración de registro) en un si es solo el más trivial) entonces solo adelante y hazlo. – bharal
No estoy de acuerdo, esto está en la línea de una actividad de lista de verificación para evitar problemas, que puede comunicarse fácilmente a un desarrollador junior, para que no introduzca un error por accidente que alguien tenga que pasar el tiempo depurando más tarde. – ammianus