Ya se sabe, la optimización prematura es la raíz de todo mal. Pero hay veces que es necesario optimizar y en estos casos no viene mal una ayuda... Por un lado conocer la estructura de las arquitecturas modernas de uso común en cuanto a memoria y cachés. De eso ya se ha encargado Ulrich Drepper como hemos comentado hace poco por aquí.
Por otro lado, he encontrado gracias a programming.reddit una serie de recursos entre los que se encuentran documentos en pdf que podrían ayudarnos. Todos ellos están escritos por Agner Fog y están reunidos en Software optimization resources. Son bastante extensos y por lo que he ojeado con bastante información valiosa. De ellos destacaría (es el que más he mirado), Optimizing software in C++ (An optimization guide for Windows, Linux and Mac platforms) (pdf) que repasa formas de optimizar C++ reparando además en particularidades de plataformas y compiladores.
Además hay también una guía para para optimizar ensamblador para plataformas x86, tablas con características de las instrucciones de Intel y AMD, programas de test y más enlaces. A disfrutar con la lectura, pero a usar con precaución ;)
Recursos para optimizar programas en C++ y ensamblador en barrapunto
jueves, noviembre 29, 2007
jueves, noviembre 22, 2007
Lo que todo programador debería saber sobre la memoria (pdf)
Ulrich Drepper ha acabado de publicar online la serie de artículos acerca de la memoria, cachés en arquitecturas modernas de uso común y de lo que el programador puede hacer al respecto. Cuando comenzó ya lo comentamos por aquí en Lo que todo programador debería saber sobre la memoria.
Y como prometió lo ha publicado ahora en pdf: "What Every Programmer Should Know About Memory" por Ulrich Drepper. Como puede ser que alguien interesado no se haya enterado de su existencia, la aparición del pdf puede ser un buen momento para recordarla...
Lo que todo programador debería saber sobre la memoria (pdf) en barrapunto
Etiquetas:
cache,
caché,
CPU,
memoria,
programación,
programadores,
rendimiento
jueves, noviembre 08, 2007
Programando con threads: algunos enlaces
Algunos enlaces a tener en cuenta si programas con threads:
- "Avoid Calling Unknown Code While Inside a Critical Section" por Herb Sutter. Como simepre, las secciones críticas cuanto más pequeñas mejor, pero además conviene saber qué es lo que se llama en ellas... (Me recuerda un poco al mantra Trata el código de los demás como si fuese tuyo)
- "Single Threaded Memory Model" de Ian Lance Taylor: como comentaba hace ya mucho en Los peligros de programar con threads el compilador puede llegar a hacer optimizaciones que den al traste con la intuitiva atomicidad de algunas variables cogidas por mutex. Pues bien, aparentemente ese problema que podría parecer remoto se puede reproducir con gcc. La solución, como siempre, conocer bien el estándar y el uso de volatile. De todos modos queda patente que se necesita algo parecido a un modelo de memoria que tenga en cuenta la concurrencia, como se comentaba también en Threads y C++(estándar)
Etiquetas:
ANSI C++,
C++,
C++0x,
hilos,
mantras,
programación,
programadores,
threads
Suscribirse a:
Entradas (Atom)