El arte de escribir programas eficientes
El arte de escribir programas eficientes
Resumen:
Introducción
El libro «The Art of Writing Efficient Programs» (en su traducción al español — «El arte de escribir programas eficientes») de Fiódor Pikus no es solo un libro de texto más sobre C++. Es una inmersión profunda en el mundo del rendimiento, la optimización y las decisiones arquitectónicas que transforman el código común en una herramienta altamente eficiente. Publicado en 2021 por la editorial Packt, este libro de 446 páginas se ha convertido en una guía de referencia para muchos desarrolladores que buscan exprimir al máximo el hardware moderno.
Fiódor Pikus es un experto reconocido en computación de alto rendimiento, que ha trabajado en Google y otros gigantes tecnológicos. Su experiencia y enfoque práctico para resolver problemas de rendimiento hacen que este libro sea único. A diferencia de muchos trabajos teóricos abstractos, Pikus ofrece metodologías concretas y probadas en la práctica, respaldadas con ejemplos en C++.
¿De qué trata este libro?
El libro está dedicado al arte de crear programas que funcionen de la manera más rápida y eficiente posible, utilizando los recursos de la CPU, la memoria y el subsistema de entrada/salida con el máximo rendimiento. El autor analiza secuencialmente los aspectos clave del rendimiento, comenzando con los fundamentos y terminando con técnicas avanzadas.
Temas principales tratados en el libro:
- Medición del rendimiento: cómo perfilar correctamente el código, interpretar los resultados y encontrar los cuellos de botella.
- Optimización de la memoria: memoria caché, alineación de datos, localidad de referencias, gestión de memoria dinámica.
- Paralelismo y multihilo: uso eficiente de hilos, sincronización, evitación de condiciones de carrera y deadlocks.
- Optimización de algoritmos: selección de las estructuras de datos correctas, complejidad algorítmica y su impacto en el rendimiento real.
- Vectorización y SIMD: uso de instrucciones del procesador para el procesamiento paralelo de datos.
- Trabajo con el compilador: cómo ayudar al compilador a generar código más rápido, flags de optimización, inlining.
- Diseño para el rendimiento: patrones arquitectónicos que desde el principio incorporan una alta velocidad de funcionamiento.
¿Para quién es este libro?
El libro está dirigido a desarrolladores que ya tienen experiencia en programación en C++ (u otro lenguaje de sistemas) y desean pasar al siguiente nivel: el nivel de creación de aplicaciones verdaderamente rápidas y eficientes. Será útil para:
- Desarrolladores de juegos y motores gráficos.
- Ingenieros que trabajan en servidores de alta carga y bases de datos.
- Especialistas en sistemas embebidos e IoT.
- Todos aquellos que escriben código para cálculos financieros, científicos o de ingeniería.
- Estudiantes de últimos cursos de especialidades técnicas que estudian programación de sistemas.
¿Qué aprenderá el lector?
Después de leer el libro, el lector podrá:
- Evaluar correctamente el rendimiento de su código utilizando perfiladores (perf, Valgrind, Google Benchmark).
- Comprender cómo funciona la memoria caché del procesador y escribir código que la aproveche al máximo.
- Gestionar la memoria de manera eficiente, evitando la fragmentación y las asignaciones innecesarias.
- Escribir código multihilo seguro y rápido utilizando primitivas de sincronización modernas.
- Aplicar instrucciones SIMD para acelerar los cálculos de 2 a 4 veces sin perder legibilidad del código.
- Seleccionar las estructuras de datos óptimas (std::vector vs std::list, tablas hash, árboles) para una tarea específica.
- Utilizar las características de C++17/20 (por ejemplo, std::optional, std::variant, constexpr) para mejorar el rendimiento.
- Diseñar una arquitectura de aplicación que desde el principio esté orientada a una alta velocidad de funcionamiento.
Puntos fuertes del libro
El libro de Fiódor Pikus se destaca entre otras publicaciones sobre optimización gracias a varias características clave:<