Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por pobrecito hablador el Lunes, 01 Noviembre de 2010, 23:52h (#1248305)

    Obviamente. Pero dejando de lado que cantidad no es sinónimo de calidad, un JIT se puede ejecutar sobre bytecode, que es de la forma que funciona .NET. Por lo que puedes aplicar optimizaciones en tiempo de compilación, y en tiempo de ejecución que el JIT aplique optimizaciones en función del entorno de ejecución.
    Las optimizaciones nunca se hacen en tiempo de compilación a bytecode. Siempre se hacen en tiempo de compilación a lenguaje máquina. Por ponerte un ejemplo, en C# ni siquiera una clase que tenga un método private y que no sea llamado nunca, se elimina en el bytecode; Se elimina al pasarlo a lenguaje máquina (hay una opción en mono que es precisamente Dead Code Elimination). Esto no se hace simplemente porque no tiene sentido hacerlo en el analizador sintáctico/semántico/léxico. Y esa es de las optimizaciones más sencillas, así que optimizaciones más complejas seguro que tampoco las hace.

    El GC es un proceso de baja prioridad, por lo que solo entra en funcionamiento cuando hay recursos libres o cuando no hay recursos en absoluto. En ambos casos, no empeora la situación. Si hay recursos, se puede ejecutar simultáneamente sin problemas. Si no hay recursos, tu aplicación tampoco puede continuar la ejecución.
    Que un proceso sea de baja prioridad no significa que nunca entre en funcionamiento excepto cuando no hay ningún otro proceso para ser ejecutado. Simplemente que entrará en ejecución menos veces si hay procesos de más prioridad ocupando el procesador. De hacerlo, el GC no entraría nunca en ejecución y tendrías un problema de Starvation. De todas formas, el GC no es un proceso aparte, independiente.
    [ Padre ]