documentp

Download Documentp

If you can't read please download the document

Upload: cristhian-paul-ramirez

Post on 25-Jul-2015

196 views

Category:

Travel


0 download

TRANSCRIPT

1. EXPANSION INLINEDEFINICION:. En programacin, inline expansion consiste en sustituir determinadas llamadas a mtodos (a funciones)por las instrucciones ejecutables de la implementacin de estos mtodos. La principal ventaja es que elcdigo puede ejecutarse mas rpido.Es una optimizacin que puede emplear un compilador para intentar una mejora en la performance cuandose ejecute el programa, pero con el costo de un posible incremento del tamao final del programa. De todasmaneras, este mtodo puede hacerse manualmente tambin,copiando y pegando el cdigofuente usadoen los lugares indicados. De todas maneras, esto ltimo no es lo recomendado, por la tendencia a cometererrores (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 sonpequeos "ahorros". El mayor "ahorro" generalmente proviene de optimizaciones adicionales que pueden serposibles en el cuerpo de las funciones "inlined" (las funciones a las que se le aplica la expansin in-line).En el contexto de los lenguajesdeprogramacin funcional, la expansin inline es a veces referida como"beta reduction" (reduccin beta), un trmino usado en el clculo lambda (el lenguaje formal que subyace a loslenguajes funcionales). .En diferentes versiones del C y C + + lenguajes de programacin , una funcin en lnea es una funcin queel compilador se ha solicitado para llevar a cabo la expansin en lnea . En otras palabras, el programador hasolicitado que el compilador inserte el cuerpo completo de la funcin en cada lugar que se llama la funcin, envez de generar cdigo para llamar a la funcin en el nico lugar que se define. (Sin embargo, los compiladoresno estn obligados a respetar esta peticin.Lasfuncionesinlinehanvenidodealgunamanera,areemplazarlasmacrosdepreprocesador.Noesqueestafueralafinalidadalcrearlas,perolautilidadesbsicamentelamisma,aunquelasfuncionesinlinetienenventajassobrelasmacros.Cuandodeclaramosunafuncinconelcalificadorinline,elcompiladorintentarllegadoelmomentodecolocarunacopiadelcdigodelafuncinenellugardelallamadaadichafuncinenlnea).Estoreducelasobrecargaquesegeneracuandollamamosafunciones,peroacostadeincrementareltamaodelprogramaporelhechodetenerunacopiadelafuncinencadalugarenquelallamamos.Eslomismoquelogramoscuandoutilizamoslasmacrosdepreprocesamientoparaexpandircdigoenlnea. 2. Aunque el resultado funcional es el mismo, existen diferencias entre los dos mtodos: Las funciones inline, al ser como cualquier otra funcin, conlleva una verificacin de tipo, cosa que no sucedecon las macros, ya que se reemplazan "sin ms". Las funciones inline no pueden utilizarse de forma sintcticamente incorrecta, ya que esto producira un errorde compilacin. 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 debenreemplazarse donde se indique. El compilador puede informar un error, pero no podr decir que se debe a unamacro, ni a cual. Por el contrario, las funciones inline se puede depurar como cualquier otra funcin. Las macros reemplazan los argumentos con los parmetros sin evaluar (ver imagen de arriba). En cambio, lasfunciones evalan los parmetros (si se trat de una expresin matemtica, por ejemplo, esta se resuelve y sepasa).En informtica , la expansin en lnea, o inline, es un manual o la optimizacin del compilador que sustituyeuna funcin sitio de llamada con el cuerpo del destinatario de la llamada . Esta optimizacin puede mejorar eltiempo y el uso del espacio en tiempo de ejecucin, en el posible costo de aumentar el tamao final delprograma (es decir, el archivo binario de tamao).Normalmente, cuando se invoca una funcin, el control se transfiere a su definicin por una rama llamadainstruccin o. Con procesos en lnea, el control a travs de las gotas directamente en el cdigo de la funcin,sin una instruccin de rama o de llamada. Inlining mejora el rendimiento de varias maneras: Se elimina el coste de la llamada a la funcin y devolver las instrucciones, as como cualquierotro prlogo y eplogo de cdigo inyectado en cada funcin por el compilador. La eliminacin de ramas y de mantenimiento de cdigo que se ejecuta muy juntos en la memoriamejora la cach de instrucciones de rendimiento mediante la mejora de localidad de referencia . Una vez que se ha realizado procesos en lnea, optimizaciones adicionales intraprocedimiento serposible en el cuerpo de la funcin "inline". Por ejemplo, una constante pasa como un argumento, amenudo se pueden propagar a todas las instancias del parmetro correspondiente, o parte de lafuncin puede ser "levantado" de un bucle .Los costes iniciales de procesos en lnea es que tiende a aumentar el tamao del cdigo, aunque no siemprelo hacen. Procesos en lnea tambin puede disminuir el rendimiento en algunos casos - por ejemplo, varias 3. copias de una funcin puede aumentar el tamao del cdigo suficiente para que el cdigo ya no cabe en lamemoria cach, lo que resulta en ms fallos de cach.Algunas lenguas (por ejemplo, C y C + + ) admiten la palabra clave en lnea en la definicin defunciones. Esta palabra clave sirve como un "toque" al compilador que debe tratar de la funcin en lnea. Loscompiladores utilizan una variedad de mecanismos, incluyendo sugerencias de los programadores, paradecidir que las llamadas de funcin debe ser entre lneas.En el contexto de los lenguajes de programacin funcional , la expansin en lnea es generalmente seguidopor el beta-reduccin de la transformacin.Un programador puede en lnea de forma manual a travs de una funcin de programacin de copia y pega ,como un tiempo de operacin de uno en el cdigo fuente . Sin embargo, otros mtodos de control de procesosen lnea (vase ms adelante) son preferibles, ya que no precipitan los errores que surgen cuando elprogramador da una versin (posiblemente modificado) duplicados del cuerpo de la funcin original, mientrasque la fijacin de un error en la funcin "inline".