Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

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



Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js

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