I'm happy to announce that I have to offer five vouchers for a digital and two vouchers for a printed issue of Fedor G. Pikus book "The Art of Writing Efficient Programs". The sponsor of these coupons is Packt.
Before I write about how you can get this book, I have to say: You must have this book if you are an experienced C++ programmer and care about performance-critical programs.
I'm a pretty experienced C++ programmer who learned a lot from Fedor's book to make it short. Honestly, the book is not easy to read. You have to study variations of program snippets and often compare the performance characteristics of these short program snippets that are part of the available full programs. You will learn at least one highly critical lesson "move design for performance from the realm of guesswork to the foundation of sound measurement-driven decisions." (Fedor G. Pikus)
A Short Overview
Let me give you a short overview of Fedor's book. The book consists of three sections having the names "Performance Fundamentals", "Advanced Concurrency", and "Design and Coding High-Performance Programs". Each section builds on the previous one.
The section "Performance Fundamentals" introduces the tools to measure the performance of your program but also dedicated chapters to the CPU architecture, memory architecture, and concurrency.
The second section about "Advanced Concurrency" is probably the most challenging and most interesting to read. Besides general thoughts about synchronization primitives such as locks or atomics, the author writes about basic building blocks of concurrent programs such as a counter or publish protocols. The section ends with an entire chapter about concurrent data structures based on locks or atomics.
The final section "Designing and Coding High-Performance Programs", applies the knowledge from the previous sections to get high-performant programs. Fedor writes in the four chapters about unnecessary copying, inefficient memory management, compiler optimization, and undefined behavior. The last chapter about "Design for Performance" is special because it broadens the focus of this book by also writing about the interaction of design and performance.
How Can You Win One of the Seven Vouchers for the Book?
To get the book is pretty simple. Just answer the following questions and send your answers to me. The answer to the second question is optional but improves your chance to win one of the coupons.
- What is your favorite tool to measure the performance of your program, and why?
- Tell me how your favorite tool helped you find the performance bottleneck.
The two best answers will get the coupons for the printed books, and the coupons for the digital books go to the five next best answers.
Thanks a lot to my Patreon Supporters: Matt Braun, Roman Postanciuc, Tobias Zindl, Marko, G Prvulovic, Reinhold Dröge, Abernitzke, Frank Grimm, Sakib, Broeserl, António Pina, Sergey Agafyin, Андрей Бурмистров, Jake, GS, Lawton Shoemake, Animus24, Jozo Leko, John Breland, Louis St-Amour, Venkat Nandam, Jose Francisco, Douglas Tinkham, Kuchlong Kuchlong, Robert Blanch, Truels Wissneth, Kris Kafka, Mario Luoni, Neil Wang, Friedrich Huber, lennonli, Pramod Tikare Muralidhara, Peter Ware, Daniel Hufschläger, Alessandro Pezzato, Evangelos Denaxas, Bob Perry, Satish Vangipuram, Andi Ireland, Richard Ohnemus, Michael Dunsky, Leo Goodstadt, John Wiederhirn, Yacob Cohen-Arazi, Florian Tischler, Robin Furness, Michael Young, Holger Detering, Bernd Mühlhaus, Matthieu Bolt, Stephen Kelley, Kyle Dean, Tusar Palauri, Dmitry Farberov, Juan Dent, George Liao, Daniel Ceperley, Jon T Hess, Stephen Totten, and Wolfgang Fütterer.
Thanks in particular to Jon Hess, Lakshman, Christian Wittenhorst, Sherhy Pyton, Dendi Suhubdy, Sudhakar Belagurusamy, Richard Sargeant, Rusty Fleming, Ralf Abramowitsch, John Nebel, Mipko, and Alicja Kaminska.
My special thanks to Embarcadero
My special thanks to PVS-Studio
I'm happy to give online seminars or face-to-face seminars worldwide. Please call me if you have any questions.
Standard Seminars (English/German)
Here is a compilation of my standard seminars. These seminars are only meant to give you a first orientation.