2010-02-18 12 views
19

Encuentro que la palabra clave var ayuda enormemente a reducir el ruido en mi código C#, con poca pérdida de legibilidad; Diría que ahora uso tipeo explícito solo cuando el compilador me obliga a hacerlo.¿Cuánto impacto tiene el uso de 'var' en el rendimiento del compilador de C#?

Sé que using var does not change the runtime characteristics of my code. Pero la pregunta acaba de ocurrirme: ¿estoy pagando una gran multa en el momento de la compilación por todo el trabajo extra que el compilador está haciendo ahora en mi nombre?

¿Alguien ha hecho algún punto de referencia para ver la diferencia que el uso extensivo de var hace a tiempos de compilación?

+0

la respuesta es - ninguna. –

+1

¿Tiene alguna evidencia o razonamiento para esa respuesta? –

+1

Voté erróneamente el cierre (pero no puedo retirar mi voto). La otra pregunta está relacionada en cierta medida, pero no exactamente duplicada. –

Respuesta

20

Mi consejo: pruébelo de ambas maneras. Mida los resultados. Entonces sabrás.

No he hecho ningún punto de referencia, e incluso si tuviera, eso no respondería a la pregunta por usted. No sabemos qué hardware tiene, qué más se está ejecutando en su máquina, cómo es un programa típico. Tampoco sabemos lo que usted considera que es un rendimiento aceptable o inaceptable. Eres el único que sabe todo eso, así que eres el único que puede responder a esta pregunta.

+3

@didibus: Te animo a que publiques una respuesta que te guste más. –

+1

En retrospectiva, veo que estaba un poco fuera de contacto. Solo desearía que el OP mantuviera esta pregunta sin respuesta para que, eventualmente, alguien que tenga datos reales de referencia o razonamiento sobre las implicaciones de rendimiento en el compilador los venga a compartir aquí. O si el OP realmente siguió esta respuesta y realizó sus propios puntos de referencia si pudiera compartir los resultados aquí. –

16

Los tipos deben verificarse de todos modos, esto incluso puede ahorrar tiempo ... bien, poco probable :)
No debería preocuparse, si su entorno de desarrollo es lento, compre más memoria o una computadora nueva. No cambie la forma en que escribe el código.

+0

+1 ... y compilar C# es increíblemente rápido si se compara con otros lenguajes como C o C++ –

+0

Aprecio el punto: no voy a cambiar mi práctica de programación debido a esto, pero me gustaría obtener algunos detalles sobre la diferencia que hace. –

+0

¿Te das cuenta de cuántas cosas diferentes hace el compilador por ti? 'var' es solo otra pequeña tarea ... – Kobi

3

La respuesta correcta es "nada medible". Para una lista parcial (aún LARGO) de los pases del compilador de C# hace al compilar, mira aquí:

http://blogs.msdn.com/ericlippert/archive/2010/02/04/how-many-passes.aspx

Entonces entendemos que la inferencia de tipos es sólo parte de un solo paso en esa lista.

+0

Sin embargo, la longitud de la lista realmente no dice nada sobre los pesos temporales relativos de cada elemento. – Joey

1

El tipo del lado derecho debe encontrarse de todos modos para realizar la verificación de tipo y/o la conversión de tipo. Asignar el resultado al tipo de variable es barato. La mayor parte del costo (si lo hay) será en lo que haya que hacer para permitir que se evalúe la expresión antes de declarar todas las variables locales, pero pagas por esto incluso si no usas var. (Por cierto, es posible o incluso probable que la restricción anterior no perjudique el rendimiento.)

Cuestiones relacionadas