Skip to content Skip to navigation

OpenStax-CNX

You are here: Home » Content » Optimización de Ciclos - Introducción

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

En prácticamente todas las aplicaciones de alto rendimiento, es en los bucles donde se gasta la mayoría del tiempo de ejecución. (Reference) examinamos formas en las que los desarrolladores de la aplicación introdujeron desorden en los bucles, posiblemente haciéndolos ejecutarse más lento de lo necesario. En este capítulo nos enfocaremos en técnicas para mejorar el rendimiento de tales ciclos "libres de desorden". A veces el compilador es lo suficientemente inteligente para generar las versiones más rápidas de los bucles, y otras veces nos veremos en la necesidad de reescribirlos manualmente para ayudarle.

Es importante recordar que las modificaciones que hagamos para mejorar el rendimiento del compilador, provocan otro desorden en el compilador. Cuando hace usted modificaciones en nombre del rendimiento, debe asegurarse que éstas realmente ayudan, probando el rendimiento con y sin ellas. También, cuando se mueva a otra arquitectura, necesita asegurarse que cualquier modificación hecha no perjudique al rendimiento. Por esta razón, debe elegir sabiamente las modificaciones que haga en pos del rendimiento. También debe dejar intacta la versión original (simple) del código, para probarla en nuevas arquitecturas. Si nota que el beneficio derivado de las modificaciones es pequeño, muy probablemente deba mantener el código en su versión más simple y clara.

Revisaremos varias técnicas de optimización de bucles diferentes, incluyendo:

  • Desenrollado de bucles
  • Optimización de bucles anidados
  • Intercambio de bucles
  • Optimización de las referencias a memoria
  • Bloqueo
  • Soluciones fuera del núcleo

Tal vez algún día sea posible que un compilador realice todas estas optimizaciones de bucles automáticamente. Es normal que el desenrollado de bucles se realice como parte de las optimizaciones de un compilador normal. Otras puede que deban incluirse mediante opciones explícitas del compilador al invocarlo. Cuando contemple hacer cambios manualmente, observe cuidadosamente cuáles de tales optimizaciones hace el compilador automáticamente. Y ejecute algunas pruebas para determinar si las optimizaciones del compilador son tan buenas como aquellas realizadas a mano.

Content actions

Download module as:

Add 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