Pregunta

¿Cuánto cuesta a mi rendimiento programas si añado Los métodos de extensión a ella?
¿Funcionará más lento o puede ser cargará más lento?
Gracias.

¿Fue útil?

Solución

  

¿Cuánto cuesta a mis programas   rendimiento si añado Los métodos de extensión   ¿lo? ¿Funcionará más lento o puede ser   se carga más lento?

No habrá ningún impacto en el rendimiento. Los métodos de extensión son métodos muy estáticas.

Otros consejos

Un método de extensión es simplemente azúcar sintáctica aplica a un método estático.

En teoría, un método estático es más rápido que un método de instancia no virtual (no es necesario para comprobar si hay this nulo) que a su vez es más rápido que un método de instancia virtual (sin necesidad de mirar de cerca la aplicación de llamada).

En teoría también, optimizaciones podría deshacerse de estas diferencias. También es exagerada en términos de estática cuando se trata de métodos de extensión, ya que el objeto es probablemente va a ser tratado en tal forma que requiere un nulo-cheque (ya sea explícita o implícita de las formas es el uso) de todos modos.

En la práctica, lo más probable es que sea cual sea el método de extensión no tendrá mucho, mucho más de un impacto que si se trata de la extensión o instancia.

I rápidamente el rendimiento probado esto utilizando algunos métodos de extensión de enteros en un bucle muy largo corriendo y se encontró que en los casos I ensayados, el rendimiento fue generalmente idénticos. Al depurar o ejecutar montajes no optimizadas, los métodos de extensión corrieron aproximadamente el doble de lo más lentamente mis casos de control, esto tiene sentido porque el depurador puede no inline estos métodos y tiene que realizar un seguimiento de la pila de llamadas, etc.

Por lo tanto, en un conjunto listo para su liberación, sin penalizar el rendimiento.

Desde luego, no se cargan más lentamente, como cargar un programa no depende de las rutas de ejecución en el programa.

Como para correr más despacio? Sólo midiendo el tiempo que tarda el método de extensión y el método no extensión mostrará a ciencia cierta. Sospecho que la diferencia no será significativo, incluso si en realidad es medible.

La consideración importante debe ser siempre "hace el método de extensión que mi código más claro y más fácil de entender y mantener".

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