<< Chapter < Page Chapter >> Page >

En prácticamente todas las aplicaciones de alto rendimiento, es en los bucles donde se gasta la mayoría del tiempo de ejecución. [link] 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.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Cómputo de alto rendimiento. OpenStax CNX. Sep 02, 2011 Download for free at http://cnx.org/content/col11356/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?

Ask