Puede ser útil tener en cuenta que cuando C++ ve una operación modulo 2
como %2
, generalmente se optimiza sin que usted realice operaciones a nivel de bit.
Si bien sería esclarecedor para entender todos estos trucos, debería ser agradable saber que el compilador (o el escritor del compilador) hace un gran esfuerzo para obtener todas las optimizaciones posibles.
Lo que debe recordar es que si usa constantes y trabaja en potencias de 2, las optimizaciones son más probables ya que los compiladores aprovechan las capacidades del operador binario de la máquina.
Además, sugiero que conozcan cómo funcionan los sistemas a bajo nivel.
Para este fin, los trucos de aprendizaje que se refieren aquí serían very useful.
Sin embargo, cryptic coding with complicated operations jammed together
(por ejemplo, para hacerlo todo en un menor número de bytes de código fuente) no es bueno.
Puede ser bueno saber que puede intercambiar dos variables de 32 bits 'en su lugar', sin una tercera variable temporal, usando operaciones XOR. Sin embargo, sería mucho más útil saber hhow cross compilation requires big-endian and little-endian handling para variables de 2/4 bytes ybit fields.
Hablando de campos de bits, me recuerda a otro stackoverflow conversation on their popularity. También sería una buena lectura (aunque no del todo relacionada con su pregunta).
En resumen, estoy totalmente de acuerdo con usted para aprender qué trucos se pueden hacer. Quiero usarlos para hacer que mi código tenga un mejor rendimiento, y creo firmemente que habrá conceptos como, what can programmers to do make better cache optimization, por ejemplo, que ayudarán a hacer mejores implementaciones.
que podría haber ganado el mismo aumento de velocidad al permitir que las optimizaciones del compilador. Ese es un "truco" mucho más valioso. No pierda su tiempo en optimizaciones fácilmente automatizadas. El compilador hará eso por usted de todos modos – jalf
@jalf - gracias por la idea de habilitar optimizaciones. No tengo experiencia y recién comencé a aprender C++. Tendré en mente tu sugerencia. – zeroDivisible