2011-03-06 19 views
5

Estoy considerando hacer un uso limitado de la palabra clave dynamic de C#. Mi initial time trials fue asombroso: un golpe de rendimiento de menos de un segundo por 100.000 iteraciones (probablemente debido al almacenamiento en caché DLR).¿Cuál es la huella de memoria del DLR?

no tengo acceso a un generador de perfiles de memoria, sin embargo, y Eric Lippert wrote:

Entonces se pone en marcha el DLR [...] El DLR se pondrá en funcionamiento una versión especial de la C# compilador ...

¿Cuál es la huella de memoria de esto, y está descargado cuando el código dinámico es recogido?

+2

Personalmente, no me preocuparía la huella de DLR en un lenguaje de recolección de basura de alto nivel que compila en bytecode como C# – dtech

+1

Obtenga acceso a un generador de perfiles. El almacenamiento en caché es clave en el DLR, su estado en caché no se parece al mío. –

Respuesta

11

¿se descarga cuando el código dinámico se recolecta basura?

La pregunta presupone una premisa incorrecta; el código generado de forma dinámica no es basura recolectada en la implementación actual. Se almacena en caché y las memorias caché permanecen activas hasta que se derrota el dominio de aplicación. No sabemos cuándo última vez se va a llamar una ruta de código particular.

Si desea conocer el impacto en la memoria virtual, la memoria del montón, los bytes privados, los bytes compartidos, etc., entonces mi sugerencia es que use un generador de perfiles de memoria para responder esas preguntas específicas. Hay media docena de "huellas de memoria" diferentes que podrían interesarle, y no sé cuál es relevante para usted. Use la herramienta adecuada para medir lo que sea interesante para usted, y entonces sabrá.

Cuestiones relacionadas