:I test a stl sort function in vs2005 and find the efficiency of debug
: to release version is about 1000:1, it suprise me and I'm curious what
: cause it.
In debug mode, some standard library implementations (including the
one provided with VS2005) go to great lengths in making rendundant
checks. For example, each container might internally be keeping
a list of all iterators that point into it. And whenever an operation
on the container could invalidate iterators, all iterators will be
marked as invalid, to be able to report such diagnostics. As a result,
some operations are slowed down by orders of magnitude.
Defining some macros may allow you to disable these features in
debug mode (as well). This would allow you to suppress this
library-caused performance penalty.
[ Note that VS2005 also has some (lighter) library checks enabled
in release builds as well by default. They can explicitly
be disabled as well -- check your documentation if you need this. ]
hth -Ivan