Pregunta

Vi esta pregunta preguntando si los globales son malos .

Mientras pensaba en las ramificaciones de la misma, el único argumento que se me ocurrió que son necesarios en algunos casos podría ser por razones de rendimiento.

Pero, no estoy muy seguro de eso. Entonces, mi pregunta es, ¿usar un global sería más rápido que usar una llamada al método get / set?

¿Fue útil?

Solución

Una comparación más apropiada sería entre acceder a un (estático) global y a un local.

De hecho, un global es más rápido porque acceder a un local requiere que el desplazamiento de la variable se agregue al valor del puntero de la pila.

Sin embargo, nunca, nunca tendrás que preocuparte por esto. Intente concentrarse en cosas importantes, como hacer que su código sea legible, escribible y funcione.

Otros consejos

Un buen compilador moderno debería incorporar las llamadas al método get / set de manera tal que probablemente no haya una diferencia real.

En casi cualquier caso, es mucho más importante preocuparse por si las estáticas / globales le causarán dolor de cabeza que las implicaciones de rendimiento, que de todos modos serán casi indetectables.

Podría obtener más rendimiento aún escribiendo en ensamblador. Y también pierda más tiempo depurando su código.

Es exactamente el mismo tipo de comercio.

Puede ser un poco más rápido, pero no un gran aumento de velocidad. Sin embargo, el hecho de tener funciones globales de captador y definidor para todo mantiene el tamaño de la aplicación bajo. Si este tipo de ahorro de tamaño es beneficioso para su aplicación es relevante para la plataforma a la que se dirige. Por ejemplo, al desarrollar aplicaciones integradas, plataformas con memoria limitada, puede ser una solución viable.

Depende de la CPU y el compilador. En al menos un conjunto de chips PPC popular, cargar una variable global requiere instrucciones adicionales porque no puede codificarse en un desplazamiento relativo de 16 bits.

Además, puede tomar una basura gigante en la localidad de la memoria caché y / o destruir cualquier optimización que no suponga alias. Asumir que los globales pueden aumentar el rendimiento es algo ingenuo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top