Comencé a leer Algorithms y me pregunto, cuando se trata de primitivas del mismo tipo, ¿cuál es la operación, asignación o comparación más cara? ¿Esto varía mucho entre los idiomas?¿Qué es más costoso, comparación o asignación?
Respuesta
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.
¿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
Puede que le interese observar que el libro trata principalmente sobre Big-O. ¿Por qué debería importarme? Porque no lo sé – cmsjr
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. –
Pyro, gracias por su visión, si no por el tono. – cmsjr
- 1. ¿Qué es más rápido? Comparación o asignación?
- 2. ¿Es RelativeLayout más costoso que LinearLayout?
- 3. ¿Por qué es más costoso descubrir un defecto más adelante en el proceso?
- 4. ¿Por qué el control NHibernate AutoFlush es tan costoso?
- 5. Es costoso hacer array.length o list.count en un bucle
- 6. ¿Por qué asignar o inicializar NSDateFormatter se considera "costoso"?
- 7. ¿Qué es más costoso en cada vista de página? ¿Escrituras de base de datos o escrituras de archivo?
- 8. ¿Qué es más eficiente? Más núcleos o más CPU
- 9. ¿Por qué es tan costoso DrawingContext.DrawText de Wpf?
- 10. ¿Es costoso crear objetos en .Net?
- 11. ¿Qué es más rápido, INSTR o LIKE?
- 12. ¿Qué es más rápido EN O?
- 13. ¿qué es más rápido: recrear o borrar()?
- 14. ¿Qué es más aleatorio, hashlib o urandom?
- 15. ¿Qué es más rápido, XPath o Regexp?
- 16. ¿Qué es más eficiente i ++ o ++ i?
- 17. escribe o imprime, ¿qué es más rápido?
- 18. ¿Qué es más rápido: Union o Concat?
- 19. ¿Qué es más rápido: JDBC o JNDI?
- 20. ¿Qué es más rápido: muchos ifs, o si?
- 21. comparación de punto flotante de asignación constante
- 22. Double.TryParse o Convert.ToDouble - ¿Qué es más rápido y más seguro?
- 23. ¿Qué es la asignación perezosa?
- 24. ¿Es costoso devolver una lista estándar?
- 25. que es más rápido, equalsIgnoreCase o compareToIgnoreCase
- 26. Comparación de suites SOA -Jboss, Apache, WSO2 o ... ¿algo más?
- 27. ¿Qué tan costoso es JOINs en SQL? Y/o ¿cuál es la compensación entre el rendimiento y la normalización?
- 28. ¿Qué comparación de punto flotante es más precisa y por qué?
- 29. ¿Es O (log n) siempre más rápido que O (n)
- 30. ¿Cuál es más preferible? ¿Guardia o estuche?
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
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. –
si bien la respuesta proporcionada es práctica, evita por completo la pregunta: | – Darioush