El Inlining

by Valeriano Tortola 1. septiembre 2007 06:00

A menudo al hablar de optimización de código se habla del inlining (código en línea) como técnica de optimización que realiza el del JIT, pero ... en que consiste?

Pues se trata de substituir el código de una llamada a función por el cuerpo de dicha función, de forma que se evita el paso de parámetros y manejo de bloques de activación. Una de las ventajas de trabajar distrubuyendo el código en funciones es su posterior reutilización, pero a la hora de compilar, si las funciones son pequeñas pueden crear una perdida de rendimiento grande en comparación a la ventaja de la reutilización de código, por lo que muchos compiladores realizan este proceso de inlining para determinadas funciones. Esto se aplica también a las propiedades y sus get/set, que suelen ser pequeños métodos.

Hay una serie de circunstancias en las que no se puede realizar el inlining de una función, las más importantes son:

  • El método se ha marcado con el atributo MethodImpl(MethodImplOptions.NoInlining).
  • El tamaño del código administrado es mayor a 32 bytes. Cuando el tamaño es superior, el coste de realizar la llamada a función es inferior a realizar el inlining allí donde se llame dicha función.
  • Llamadas a métodos virtuales, pues no se sabe cual es el método que se llamará finalmente (ya que se realiza late binding).
  • Tipos por valor, por la implementación de otras características del CLR, parece que el JIT tiene varias limitaciones para realizar inlining de funciones que devuelven tipos por valor.
  • MarshalByRef, no se puede hacer inlining de clases de este tipo ó derivan de dicha clase.
  • Restricciones del CLR, normalmente restricciones de seguridad, el JIT debe preguntarle si puede realizar el inlining.
  • Otras...

David Notario lo explica bastante bien en su blog mediante dos artículos, Jit Optimizations: Inlining(I) y Jit Optimizations: Inlining(II).

Tags: , ,

.NET 2.0

Comentarios

01/09/2007 6:31:38 #

pingback

Pingback from elbruno.com

El Inlining - vtortola

elbruno.com |

Comentarios no permitidos