Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

156
Visualizações
Optimización de IL para compiladores JIT

Estoy desarrollando un compilador que emite código IL. Es importante que el IL resultante sea JIT a los códigos de máquina más rápidos posibles por los compiladores Mono y Microsoft .NET JIT.

Mis preguntas son:

  1. ¿Tiene sentido optimizar patrones como:

     'stloc.0; ldloc.0; ret' => 'ret' 'ldc.i4.0; conv.r8' => 'ldc.r8.0'

    y tal, o son los JIT lo suficientemente inteligentes como para encargarse de esto?

  2. ¿Existe una especificación con la lista de optimizaciones realizadas por los compiladores Microsoft/Mono JIT?

  3. ¿Hay alguna buena lectura con recomendaciones prácticas/mejores prácticas para optimizar IL para que los compiladores JIT puedan, a su vez, generar el código de máquina más óptimo (en cuanto al rendimiento)?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

  1. Los dos patrones que describí son las cosas fáciles que el JIT realmente hace bien (a excepción de las estructuras no primitivas). En forma SSA, la propagación constante y la eliminación de valores muertos es muy fácil.
  2. No, tienes que probar lo que puede hacer el JIT. Mire la literatura del compilador para ver qué optimizaciones estándar esperar. Luego, prueba para ellos. Los dos JIT que tenemos ahora optimizan muy poco y, a veces, no hacen bien las cosas más básicas. Por ejemplo, MyStruct s; sx = 1; sx = 1; no está optimizado por RyuJIT. s = s; tampoco lo es sx + sx carga x dos veces desde la memoria. Espera poco.
  3. Debe comprender a qué se asignan las operaciones básicas del código de máquina. Esto no es demasiado complicado. Pruebe algunas cosas y mire la lista de desmontaje. Rápidamente obtendrá una idea de cómo se verá la salida.
over 4 years ago · Santiago Trujillo Relatório

0

Las conversiones redundantes y la carga/almacenamiento como ese son un efecto secundario bastante inevitable de un analizador recursivo decente. Técnicamente, puedes deshacerte de ellos con un optimizador de mirilla. Pero no hay de qué preocuparse, los compiladores de C# y VB.NET también los generan.

Los nervios de .NET/Mono existentes son muy buenos para optimizarlos. Se enfocan en optimizar el código que realmente importa para la velocidad de ejecución, el código máquina. Con la gran ventaja de que cualquiera que escriba un compilador que genere IL automáticamente se beneficia de estas optimizaciones sin tener que hacer nada especial.

Las optimizaciones de jitter están cubiertas en esta publicación .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda