2009-03-09 20 views

Respuesta

6

micro-optimización es casi siempre el mal que hay que hacer. No lo inicie a menos que el programa se ejecute demasiado lento, y use un generador de perfiles para determinar exactamente dónde están las partes lentas.

Una vez que hayas hecho esto, mi consejo es ver sobre la mejora de código y datos localidad, debido a fallos de caché son casi ciertamente peor que las instrucciones subóptimas.

Una vez hecho esto, en el caso bastante extraño que se puede utilizar un enfoque basado en la cesión o basados ​​en la comparación, probar ambos y tiempo de ellos. Micro-optimización es un juego de números. Si los números no son lo suficientemente buenos, averigüe por qué, luego verifique que lo que está haciendo realmente funciona.

Así que, ¿qué es lo que entendemos por una comparación? Los saltos condicionales causan problemas a cualquier procesador vagamente moderno, pero diferentes procesadores hacen cosas diferentes, y no hay garantía de que alguno disminuya la velocidad. Además, si cualquiera de las dos causas una falta de caché, esa es probablemente la más lenta sin importar qué.

Por último, las lenguas se obtiene generalmente a código máquina, y las cosas simples, como las comparaciones y asignaciones normalmente se compilan la misma. La gran diferencia será el tipo de CPU.

+0

No estoy realizando una micro-optimización, esta fue solo una curiosidad que tuve después de ver algunos algoritmos de clasificación parcial y luego comparar. – cmsjr

+0

OK, pero la cuestión de qué operaciones son más rápidas se ha vuelto mucho más complicada desde que comencé en este campo. Los procesadores modernos son realmente complicados y difíciles de predecir. –

+0

si bien la respuesta proporcionada es práctica, evita por completo la pregunta: | – Darioush

9

¿Qué opinas?

A un nivel más bajo hace dos lecturas, el otro hace una lectura y una escritura.

¿Pero por qué deberías preocuparte de verdad? No debería preocuparse por el rendimiento en este nivel. Optimizar para Big-O

+3

Puede que le interese observar que el libro trata principalmente sobre Big-O. ¿Por qué debería importarme? Porque no lo sé – cmsjr

+1

Acepto que es una optimización ridícula, pero saber cómo funciona cada uno no es inútil. +1 de mí al OP y esta respuesta. –

+0

Pyro, gracias por su visión, si no por el tono. – cmsjr

Cuestiones relacionadas