Skip to content Skip to navigation Skip to collection information

OpenStax-CNX

You are here: Home » Content » Cómputo de Alto Rendimiento » Qué Hace un Compilador - Niveles de Optimización

Navigation

Table of Contents

Recently Viewed

This feature requires Javascript to be enabled.
 

Qué Hace un Compilador - Niveles de Optimización

Module by: José Enrique Alvarez Estrada. E-mail the authorTranslated By: José Enrique Alvarez Estrada

Based on: What a Compiler Does - Optimization Levels by Charles Severance, Kevin Dowd

Existe una amplia variedad de técnicas de optimización, no todas ellas aplicables en todas las circunstancias. Así que normalmente se le dan al usuario algunas opciones sobre cuáles optimizaciones realizar y cuáles no. A menudo esto se expresa en la forma de un nivel de optimización que se le especifica al compilador como una opción de la línea de comandos, como por ejemplo –O3.

Entre los distintos niveles de optimización controlados mediante una bandera suelen estar los siguientes:

  • Ninguna optimización: Genera código máquina a partir directamente del código intermedio, que puede ser un código muy largo y lento. Se usa primordialmente para los depuradores, y para establecer la salida correcta del programa. Dado que cada operación se realiza precisamente como el usuario lo especificó, debe ser correcta.
  • Optimizaciones básicas:Similares a las descritas en este capítulo. Generalmente trabaja minimizando el lenguaje intermedio y generando código compacto y rápido.
  • Análisis interprocedimental: Observa más allá de las fronteras de una única rutina, en busca de oportunidades de optimización. Este nivel de optimización puede incluir extender una optimización bñásica, tal como la propagación de copias, a través de múltiples rutinas. Otro resultado de esta técnica es la inserción de procedimientos en línea (inline) en aquellos lugares donde mejore el rendimiento.
  • Análisis de perfil a tiempo de ejecución: Es posible usar el perfilado a tiempo de ejecución para ayudar al compilador a generar código mejorado, basado en su conocimiento de los patrones de ejecución a tiempo de ejecución, reunidos a partir de la información del perfil.
  • Optimizaciones de punto flotante: El estándar de punto flotante del IEEE (IEEE 754) especifica con precisión cómo se llevan a cabo las operaciones de punto flotante. El compilador puede identificar ciertas transformaciones algebraicas que incrementan la velocidad del programa (tales como reemplazar una división con un recíproco una multiplicación), pero ello pudiera cambiar los resultados de salida respecto al código no optimizado.
  • Análisis de flujo de datos: Identifica el paralelismo potencial entre instrucciones, bloques o incluso iteraciones sucesivas de bucles.
  • Optimización avanzada: Puede incluir vectorización, paralelización o descomposición de datos automáticas en computadoras con arquitecturas avanzadas.

Tales optimizaciones pueden controlarse mediante varias opciones distintas del compilador. A menudo se lleva algún tiempo cavilar la mejor combinación de banderas de compilación para un código o conjunto de códigos en particular. En algunos casos, los programadores compilan diferentes rutinas usando diferentes configuraciones de optimización, para lograr el mejor rendimiento global.

Collection Navigation

Content actions

Download:

Collection as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Module as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Add:

Collection to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks

Module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks