I know that I took some time to continue writing, but I was really busy. At least I had time to read many interesting books, and to stop reading some boring ones.


In the last post I talked just a little bit about the book "Efficient C++ Performance Programming Techniques" and I decided now to continue the posts talking exactly about this book written by Dov Bulka and David Mayhew.
The book is perfect for those ones who are on C and thinking about to upgrade to C++. It is possible to see sometimes that there is a lot of prejudice among embedded developers and C purist developers against C++. This book is exactly for those ones. If you have thoughts about how C is ever faster than C++, I would recommend this book for you; not to "evangelize" you, but to have a good balance on what you think about each language. And even better, to understand many of the prejudice against C++ is mainly based on the lack of knowledge on how to work with classes in C++.

I can tell you, I had this prejudice against C++ when starting my career and could overcome it even before reading this book, but after this reading, I could really go ahead in not just being comfortable on programming C++, but also understand more deeply how things are done internally when working with classes. That is extremely important when performance requirements are a critical requirement.

The book explains many details about classes and object creations, it points some common mistakes that we are used to do innocently. Not just the big mistakes, but also some mistakes that could event not be considered a mistake, but that can make a big difference when we are working on a software where each clock is precious.
It won`t make you crazy about each clock spent by your software, but it will give you a good balance when thinking about how much of your time should be spent on optimizing the code, and where to attack when working on it.
It will give you a good perspective on what compilers do behind the scenes, especially when working with inline functions. A lot of the book is just about inlining! With many tricks to consider!
It is full of performance comparisons. Each time it explains some performance hints on C++ it shows the bench-marking results they got with that.


And if you think that working with STL libraries you don`t need to care so much about that, since STL is well optimized by definition, the book contains a chapter about that. It`s a good chapter about how to use STL efficiently, about which container is better for each kind of application. And of course, when would be faster not to use STL, what would make many C++ developers to screw up.
For those who still stands for pure C, the book has also many hints that can be very useful for C software also, and even I had implemented some hints from the book in one of my C projects.
Finally, the book covers also aspects of scalability, architecture and threats separately code optimizations and design optimizations.


Well, I did not become those ones that want to convert all C projects into C++ code like crazy. I still work happily on both projects at work, but I admit that there is one specific C application of mine that I really would like to convert it all to C++ and it would make my life easier after that. But for now, what I could do is apply many cache considerations that was learned here.

"Software performance is important and always will be."