Tengo la siguiente pregunta:¿Por qué JDK usa el desplazamiento en lugar de multiplicar/dividir?
Si se le pregunta si usar un cambio frente a un multiplicar o dividir, por ejemplo, la respuesta sería, deje que la JVM optimice.
Ejemplo aquí: is-shifting-bits-faster-than-multiplying
Ahora que estaba buscando en el código fuente del JDK, por ejemplo Priority Queue y el código sólo utiliza el cambio tanto para la multiplicación y división (con y sin signo).
Dando por sentado que la publicación en SO es la respuesta válida, me preguntaba por qué en jdk prefieren hacerlo cambiando de lugar.
¿Se trata de algún detalle sutil no relacionado con el rendimiento? Estoy sospechando que debe tener algo que ver con la multiplicación y división de exceso/defecto, pero no estoy seguro.
Cualquiera tiene una idea? ¿Los problemas sutiles de desbordamiento se manejan mejor usando el cambio? ¿O es solo una cuestión de gusto?
Así que no es posible escribir código libre de errores sin operador de turno para sutil problemas como este? – Cratylus
@ user384706 Por supuesto que puedes: un simple operador ternario aquí y allá podría ayudarte a hacer el truco. Sin embargo, la eficiencia va a sufrir. – dasblinkenlight
¿Sería posible mostrar un ejemplo de esto? Me interesaría saber – Cratylus