Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Advanced
Oct 27, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Before You Profile Your Software...

If you intend to optimize your software's performance, make sure to profile the release version rather than the debug version. The debug version of the executable contains additional code (about 40% extra compared to the equivalent release executable) for symbol lookup and other debug "scaffolding." In addition, most compilers have distinct implementations of operator new in debug and release versions. The debug version of new initializes the memory it allocates with a unique value and adds a header at block start. Release version of new doesn't perform any of these actions. Furthermore, a release version of an executable is aggressively optimized in the following ways:
  • Elimination of unneeded variables
  • Loop flattening
  • Register storage
  • Inlining
For these reasons, you can't deduce from a debug version where the actual bottlenecks are located.

Debugging and optimizations are two distinct operations. Use the debug version to chase bugs and logical errors, and profile the release version to optimize it.

Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date