SlideShare une entreprise Scribd logo
1  sur  3
EXPANSION INLINE
DEFINICION:


. En programación, inline expansion consiste en sustituir determinadas llamadas a métodos (a funciones)
por las instrucciones ejecutables de la implementación de estos métodos. La principal ventaja es que el
código puede ejecutarse mas rápido.

Es una optimización que puede emplear un compilador para intentar una mejora en la performance cuando
se ejecute el programa, pero con el costo de un posible incremento del tamaño final del programa. De todas
maneras, este método puede hacerse manualmente también,copiando y pegando el código fuente usado
en los lugares indicados. De todas maneras, esto último no es lo recomendado, por la tendencia a cometer
errores (entre otros problemas que pueden surgir del copiar y pegar).

In-line expansion elimina el costo de las instrucciones de llamadas y retornos de funciones, aunque estos son
pequeños "ahorros". El mayor "ahorro" generalmente proviene de optimizaciones adicionales que pueden ser
posibles en el cuerpo de las funciones "inlined" (las funciones a las que se le aplica la expansión in-line).

En el contexto de los lenguajes de programación funcional, la expansión inline es a veces referida como
"beta reduction" (reducción beta), un término usado en el cálculo lambda (el lenguaje formal que subyace a los
lenguajes funcionales).

 .
En diferentes versiones del C y C + + lenguajes de programación , una función en línea es una función que
el compilador se ha solicitado para llevar a cabo la expansión en línea . En otras palabras, el programador ha
solicitado que el compilador inserte el cuerpo completo de la función en cada lugar que se llama la función, en
vez de generar código para llamar a la función en el único lugar que se define. (Sin embargo, los compiladores
no están obligados a respetar esta petición.
                  




Las funciones inline han venido de alguna manera, a reemplazar las macros de preprocesador. No es 
que esta fuera la finalidad al crearlas, pero la utilidad es básicamente la misma, aunque las 
funciones inline tienen ventajas sobre las macros.
  
 Cuando declaramos una función con el calificador inline, el compilador intentará ­llegado el 
momento­ de colocar una copia del código de la función en el lugar de la llamada a dicha función en 
línea). Esto reduce la sobrecarga que se genera cuando llamamos a funciones, pero a costa de 
incrementar el tamaño del programa por el hecho de tener una copia de la función en cada lugar en 
que la llamamos.

Es lo mismo que logramos cuando utilizamos las macros de preprocesamiento para expandir código 
en línea. 
Aunque el resultado funcional es el mismo, existen diferencias entre los dos métodos:

•   Las funciones inline, al ser como cualquier otra función, conlleva una verificación de tipo, cosa que no sucede
    con las macros, ya que se reemplazan "sin más".

•   Las funciones inline no pueden utilizarse de forma sintácticamente incorrecta, ya que esto produciría un error
    de compilación. Con las macros, es posible sufrir ciertos efectos colaterales por mal uso.

•   Las macros no puede ser depuradas, ya que para el precompilador son solo porciones de texto que deben
    reemplazarse donde se indique. El compilador puede informar un error, pero no podrá decir que se debe a una
    macro, ni a cual. Por el contrario, las funciones inline se puede depurar como cualquier otra función.

•   Las macros reemplazan los argumentos con los parámetros sin evaluar (ver imagen de arriba). En cambio, las
    funciones evalúan los parámetros (si se tratá de una expresión matemática, por ejemplo, esta se resuelve y se
    pasa).
    En informática , la expansión en línea, o inline, es un manual o la optimización del compilador que sustituye
    una función sitio de llamada con el cuerpo del destinatario de la llamada . Esta optimización puede mejorar el
    tiempo y el uso del espacio en tiempo de ejecución, en el posible costo de aumentar el tamaño final del
    programa (es decir, el archivo binario de tamaño).
    Normalmente, cuando se invoca una función, el control se transfiere a su definición por una rama llamada
    instrucción o. Con procesos en línea, el control a través de las gotas directamente en el código de la función,
    sin una instrucción de rama o de llamada. Inlining mejora el rendimiento de varias maneras:

        • Se elimina el coste de la llamada a la función y devolver las instrucciones, así como cualquier
            otro prólogo y epílogo de código inyectado en cada función por el compilador.

        • La eliminación de ramas y de mantenimiento de código que se ejecuta muy juntos en la memoria
            mejora la caché de instrucciones de rendimiento mediante la mejora de localidad de referencia .

        • Una vez que se ha realizado procesos en línea, optimizaciones adicionales intraprocedimiento ser
            posible en el cuerpo de la función "inline". Por ejemplo, una constante pasa como un argumento, a
            menudo se pueden propagar a todas las instancias del parámetro correspondiente, o parte de la
            función puede ser "levantado" de un bucle .
    Los costes iniciales de procesos en línea es que tiende a aumentar el tamaño del código, aunque no siempre
    lo hacen. Procesos en línea también puede disminuir el rendimiento en algunos casos - por ejemplo, varias
copias de una función puede aumentar el tamaño del código suficiente para que el código ya no cabe en la
memoria caché, lo que resulta en más fallos de caché.
Algunas lenguas (por ejemplo, C y C + + ) admiten la palabra clave en línea en la definición de
funciones. Esta palabra clave sirve como un "toque" al compilador que debe tratar de la función en línea. Los
compiladores utilizan una variedad de mecanismos, incluyendo sugerencias de los programadores, para
decidir que las llamadas de función debe ser entre líneas.
En el contexto de los lenguajes de programación funcional , la expansión en línea es generalmente seguido
por el beta-reducción de la transformación.
Un programador puede en línea de forma manual a través de una función de programación de copia y pega ,
como un tiempo de operación de uno en el código fuente . Sin embargo, otros métodos de control de procesos
en línea (véase más adelante) son preferibles, ya que no precipitan los errores que surgen cuando el
programador da una versión (posiblemente modificado) duplicados del cuerpo de la función original, mientras
que la fijación de un error en la función "inline".

Contenu connexe

Tendances (20)

Lenguajes de Programación
Lenguajes de ProgramaciónLenguajes de Programación
Lenguajes de Programación
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Cargadores y ligadores
Cargadores y ligadoresCargadores y ligadores
Cargadores y ligadores
 
Introducción
IntroducciónIntroducción
Introducción
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
 
Herramientas case[procesamiento de lenguaje analisis de p
Herramientas case[procesamiento de lenguaje   analisis de pHerramientas case[procesamiento de lenguaje   analisis de p
Herramientas case[procesamiento de lenguaje analisis de p
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladores
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPULenguaje ensamblador y Estructura del CPU
Lenguaje ensamblador y Estructura del CPU
 
03.Programación en ensamblador
03.Programación en ensamblador03.Programación en ensamblador
03.Programación en ensamblador
 
Tasm
TasmTasm
Tasm
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Ensamblador expo
Ensamblador expoEnsamblador expo
Ensamblador expo
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 

En vedette

PWP Tots els ports es diuen Helena
PWP Tots els ports es diuen HelenaPWP Tots els ports es diuen Helena
PWP Tots els ports es diuen Helenagranadella
 
Prochains lieux de pique-nique
Prochains lieux de pique-niqueProchains lieux de pique-nique
Prochains lieux de pique-niqueFanny Diori
 
El escondite perfecto
El escondite perfectoEl escondite perfecto
El escondite perfectoEvamarribas
 
Portfolio Lh Secteur Viticole
Portfolio Lh Secteur ViticolePortfolio Lh Secteur Viticole
Portfolio Lh Secteur Viticolelucie hourdequin
 
Mapa conceptual y mentefacto conceptual
Mapa conceptual y mentefacto conceptualMapa conceptual y mentefacto conceptual
Mapa conceptual y mentefacto conceptualNaty Ladino
 
Animer une communauté dans la durée
Animer une communauté dans la duréeAnimer une communauté dans la durée
Animer une communauté dans la duréeinnovia
 
Capitulo 4 los impuestos son demasiado altos
Capitulo 4 los impuestos son demasiado altosCapitulo 4 los impuestos son demasiado altos
Capitulo 4 los impuestos son demasiado altosalexandrapulig19
 
Nuevas Tecnologías
Nuevas TecnologíasNuevas Tecnologías
Nuevas TecnologíasErea Lopez
 
Lateral management juste, gestion du changement, formations sur mesure, inter...
Lateral management juste, gestion du changement, formations sur mesure, inter...Lateral management juste, gestion du changement, formations sur mesure, inter...
Lateral management juste, gestion du changement, formations sur mesure, inter...Lateral
 
Seminario didactics 2013.-10mo encuentro
Seminario didactics 2013.-10mo encuentroSeminario didactics 2013.-10mo encuentro
Seminario didactics 2013.-10mo encuentroEduardo R. Diaz Madero
 
Documento rabietas
Documento rabietasDocumento rabietas
Documento rabietasblogfancia
 
Trabajo informática daniel fernández
Trabajo informática daniel fernándezTrabajo informática daniel fernández
Trabajo informática daniel fernándezRotias
 

En vedette (20)

PWP Tots els ports es diuen Helena
PWP Tots els ports es diuen HelenaPWP Tots els ports es diuen Helena
PWP Tots els ports es diuen Helena
 
Autoestima
AutoestimaAutoestima
Autoestima
 
Presentación1
Presentación1Presentación1
Presentación1
 
Prochains lieux de pique-nique
Prochains lieux de pique-niqueProchains lieux de pique-nique
Prochains lieux de pique-nique
 
El escondite perfecto
El escondite perfectoEl escondite perfecto
El escondite perfecto
 
Portfolio Lh Secteur Viticole
Portfolio Lh Secteur ViticolePortfolio Lh Secteur Viticole
Portfolio Lh Secteur Viticole
 
Mapa conceptual y mentefacto conceptual
Mapa conceptual y mentefacto conceptualMapa conceptual y mentefacto conceptual
Mapa conceptual y mentefacto conceptual
 
Animer une communauté dans la durée
Animer une communauté dans la duréeAnimer une communauté dans la durée
Animer une communauté dans la durée
 
Du côté du cdi 016
Du côté du cdi 016Du côté du cdi 016
Du côté du cdi 016
 
Licencia Creative Commons
Licencia Creative CommonsLicencia Creative Commons
Licencia Creative Commons
 
Tecnologia y vida cotidiana lole
Tecnologia y vida     cotidiana loleTecnologia y vida     cotidiana lole
Tecnologia y vida cotidiana lole
 
Word07cb
Word07cbWord07cb
Word07cb
 
E L P A P E L O T E
E L  P A P E L O T EE L  P A P E L O T E
E L P A P E L O T E
 
Capitulo 4 los impuestos son demasiado altos
Capitulo 4 los impuestos son demasiado altosCapitulo 4 los impuestos son demasiado altos
Capitulo 4 los impuestos son demasiado altos
 
Nuevas Tecnologías
Nuevas TecnologíasNuevas Tecnologías
Nuevas Tecnologías
 
Lateral management juste, gestion du changement, formations sur mesure, inter...
Lateral management juste, gestion du changement, formations sur mesure, inter...Lateral management juste, gestion du changement, formations sur mesure, inter...
Lateral management juste, gestion du changement, formations sur mesure, inter...
 
Seminario didactics 2013.-10mo encuentro
Seminario didactics 2013.-10mo encuentroSeminario didactics 2013.-10mo encuentro
Seminario didactics 2013.-10mo encuentro
 
Documento rabietas
Documento rabietasDocumento rabietas
Documento rabietas
 
Jean-Charles Brisard
Jean-Charles BrisardJean-Charles Brisard
Jean-Charles Brisard
 
Trabajo informática daniel fernández
Trabajo informática daniel fernándezTrabajo informática daniel fernández
Trabajo informática daniel fernández
 

Similaire à p

Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigoAndresDvila
 
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Bryan Chasiguano
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxVctorEmmanuelEspinoM
 
Sesion virtual funciones_php_actividad3_
Sesion virtual funciones_php_actividad3_Sesion virtual funciones_php_actividad3_
Sesion virtual funciones_php_actividad3_Ignacio Fiesco
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Leslie Diaz
 
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertidoTaller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertidoJOSSELINEMARIBEL
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretadorFrancisco Leal
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Optimización global
Optimización globalOptimización global
Optimización globalSaory Rma
 

Similaire à p (20)

Niveles de optimizacion de algoritmos
Niveles de optimizacion de algoritmosNiveles de optimizacion de algoritmos
Niveles de optimizacion de algoritmos
 
Optimizacion de codigo
Optimizacion de codigoOptimizacion de codigo
Optimizacion de codigo
 
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
 
TEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptxTEMA-2 Estructura de un programa en C.pptx
TEMA-2 Estructura de un programa en C.pptx
 
Funciones
FuncionesFunciones
Funciones
 
Sesion virtual funciones_php_actividad3_
Sesion virtual funciones_php_actividad3_Sesion virtual funciones_php_actividad3_
Sesion virtual funciones_php_actividad3_
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)
 
Evolución de la programación
Evolución de la programaciónEvolución de la programación
Evolución de la programación
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones
FuncionesFunciones
Funciones
 
UNIDAD 3
UNIDAD 3 UNIDAD 3
UNIDAD 3
 
Presentación1.pptx
Presentación1.pptxPresentación1.pptx
Presentación1.pptx
 
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertidoTaller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
Taller n20 compiladores_optimizacion_codigo_9_julio_2020-convertido
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 3 margie
Unidad 3 margieUnidad 3 margie
Unidad 3 margie
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Optimización global
Optimización globalOptimización global
Optimización global
 

p

  • 1. EXPANSION INLINE DEFINICION: . En programación, inline expansion consiste en sustituir determinadas llamadas a métodos (a funciones) por las instrucciones ejecutables de la implementación de estos métodos. La principal ventaja es que el código puede ejecutarse mas rápido. Es una optimización que puede emplear un compilador para intentar una mejora en la performance cuando se ejecute el programa, pero con el costo de un posible incremento del tamaño final del programa. De todas maneras, este método puede hacerse manualmente también,copiando y pegando el código fuente usado en los lugares indicados. De todas maneras, esto último no es lo recomendado, por la tendencia a cometer errores (entre otros problemas que pueden surgir del copiar y pegar). In-line expansion elimina el costo de las instrucciones de llamadas y retornos de funciones, aunque estos son pequeños "ahorros". El mayor "ahorro" generalmente proviene de optimizaciones adicionales que pueden ser posibles en el cuerpo de las funciones "inlined" (las funciones a las que se le aplica la expansión in-line). En el contexto de los lenguajes de programación funcional, la expansión inline es a veces referida como "beta reduction" (reducción beta), un término usado en el cálculo lambda (el lenguaje formal que subyace a los lenguajes funcionales). . En diferentes versiones del C y C + + lenguajes de programación , una función en línea es una función que el compilador se ha solicitado para llevar a cabo la expansión en línea . En otras palabras, el programador ha solicitado que el compilador inserte el cuerpo completo de la función en cada lugar que se llama la función, en vez de generar código para llamar a la función en el único lugar que se define. (Sin embargo, los compiladores no están obligados a respetar esta petición.                  Las funciones inline han venido de alguna manera, a reemplazar las macros de preprocesador. No es  que esta fuera la finalidad al crearlas, pero la utilidad es básicamente la misma, aunque las  funciones inline tienen ventajas sobre las macros.     Cuando declaramos una función con el calificador inline, el compilador intentará ­llegado el  momento­ de colocar una copia del código de la función en el lugar de la llamada a dicha función en  línea). Esto reduce la sobrecarga que se genera cuando llamamos a funciones, pero a costa de  incrementar el tamaño del programa por el hecho de tener una copia de la función en cada lugar en  que la llamamos. Es lo mismo que logramos cuando utilizamos las macros de preprocesamiento para expandir código  en línea. 
  • 2. Aunque el resultado funcional es el mismo, existen diferencias entre los dos métodos: • Las funciones inline, al ser como cualquier otra función, conlleva una verificación de tipo, cosa que no sucede con las macros, ya que se reemplazan "sin más". • Las funciones inline no pueden utilizarse de forma sintácticamente incorrecta, ya que esto produciría un error de compilación. Con las macros, es posible sufrir ciertos efectos colaterales por mal uso. • Las macros no puede ser depuradas, ya que para el precompilador son solo porciones de texto que deben reemplazarse donde se indique. El compilador puede informar un error, pero no podrá decir que se debe a una macro, ni a cual. Por el contrario, las funciones inline se puede depurar como cualquier otra función. • Las macros reemplazan los argumentos con los parámetros sin evaluar (ver imagen de arriba). En cambio, las funciones evalúan los parámetros (si se tratá de una expresión matemática, por ejemplo, esta se resuelve y se pasa). En informática , la expansión en línea, o inline, es un manual o la optimización del compilador que sustituye una función sitio de llamada con el cuerpo del destinatario de la llamada . Esta optimización puede mejorar el tiempo y el uso del espacio en tiempo de ejecución, en el posible costo de aumentar el tamaño final del programa (es decir, el archivo binario de tamaño). Normalmente, cuando se invoca una función, el control se transfiere a su definición por una rama llamada instrucción o. Con procesos en línea, el control a través de las gotas directamente en el código de la función, sin una instrucción de rama o de llamada. Inlining mejora el rendimiento de varias maneras: • Se elimina el coste de la llamada a la función y devolver las instrucciones, así como cualquier otro prólogo y epílogo de código inyectado en cada función por el compilador. • La eliminación de ramas y de mantenimiento de código que se ejecuta muy juntos en la memoria mejora la caché de instrucciones de rendimiento mediante la mejora de localidad de referencia . • Una vez que se ha realizado procesos en línea, optimizaciones adicionales intraprocedimiento ser posible en el cuerpo de la función "inline". Por ejemplo, una constante pasa como un argumento, a menudo se pueden propagar a todas las instancias del parámetro correspondiente, o parte de la función puede ser "levantado" de un bucle . Los costes iniciales de procesos en línea es que tiende a aumentar el tamaño del código, aunque no siempre lo hacen. Procesos en línea también puede disminuir el rendimiento en algunos casos - por ejemplo, varias
  • 3. copias de una función puede aumentar el tamaño del código suficiente para que el código ya no cabe en la memoria caché, lo que resulta en más fallos de caché. Algunas lenguas (por ejemplo, C y C + + ) admiten la palabra clave en línea en la definición de funciones. Esta palabra clave sirve como un "toque" al compilador que debe tratar de la función en línea. Los compiladores utilizan una variedad de mecanismos, incluyendo sugerencias de los programadores, para decidir que las llamadas de función debe ser entre líneas. En el contexto de los lenguajes de programación funcional , la expansión en línea es generalmente seguido por el beta-reducción de la transformación. Un programador puede en línea de forma manual a través de una función de programación de copia y pega , como un tiempo de operación de uno en el código fuente . Sin embargo, otros métodos de control de procesos en línea (véase más adelante) son preferibles, ya que no precipitan los errores que surgen cuando el programador da una versión (posiblemente modificado) duplicados del cuerpo de la función original, mientras que la fijación de un error en la función "inline".