Me gustaría saber si realizar un cambio de sentido lógico a la derecha es más rápido cuando se cambia con una potencia de 2. Estoy usando C++.¿Es un cambio lógico a la derecha con una potencia de 2 más rápida?
Por ejemplo, es
myUnsigned >> 4
más rápido que
myUnsigned >> 3
Soy consciente de que la primera respuesta de todo el mundo estará de decirme que no hay que preocuparse por pequeñas cosas como esta, que es utilizando algoritmos y colecciones correctos para cortar órdenes de magnitud que importan. Estoy totalmente de acuerdo contigo, pero realmente estoy tratando de sacar todo lo que pueda de un chip integrado (un ATMega328) - ¡Acabo de obtener un cambio de rendimiento digno de un 'woohoo'! reemplazando una división con un cambio de bit, entonces te prometo que esto sí importa.
Gracias.
¿Por qué no se mide usted mismo? –
¿A quién le importa si 'x >> 4' es más rápido que' x >> 3'? Tienen una semántica diferente, por lo que no importa cuál es más rápido. De todos modos, nunca he encontrado una arquitectura en la que el operando correcto de un operador de desplazamiento de bits tenga algún impacto en el rendimiento. – fredoverflow
@FredOverflow: en el ATMega, la instrucción de cambio de bit no toma un operando de "número de bits para cambiar". En cuanto a 'x >> 4' contra' x >> 3' - tal vez el OP tiene algunas libertades aquí (por ejemplo, haciendo aritmética de punto fijo y tiene una cierta cantidad de latitud en qué tan grande es el componente fraccional) –