Chapter 6. Optimize Dynamically Allocated Variables
Thatâs where the money is.
Bank robber Willie Sutton (1901â1980)
This quote was attributed to Sutton as the answer to a reporterâs 1952 question, âWhy do you rob banks?â Sutton later denied ever having said it.
Except for the use of less-than-optimal algorithms, the naïve use of dynamically allocated variables is the greatest performance killer in C++ programs. Improving a programâs use of dynamically allocated variables is so often âwhere the money isâ that a developer can be an effective optimizer knowing nothing other than how to reduce calls into the memory manager.
C++ features that use dynamically allocated variables, like standard library containers, smart pointers, and strings, make writing applications in C++ productive. But there is a dark side to this expressive power. When performance matters, new
is not your friend.
Lest I start a panic, let me say that the goal in optimizing memory management is not to live an ascetic life free of distraction from the many useful C++ features that use dynamically allocated variables. Rather, the goal is to remove performance-robbing, unneeded calls into the memory manager through skillful use of these same features.
My experience is that removing even one call into the memory manager from a loop or frequently called function is enough to significantly boost performance, and there are generally opportunities to remove many more than one call.
Before talking about ...
Get Optimized C++ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.