Re: Slowdown because of exceptions?
On 01 Nov 2006 22:03:45 GMT, Paavo Helde <nobody@ebi.ee> wrote:
I'm trying to find a cause for a strange slowdown in a MS Visual C++
project. It's hard to extract as the effect appears only after several
hours of running and the application contains some hundreds of thousands
of lines so I'm not able to give any concrete code examples.
In short, the same task is run over and over, about 1000 times, for
testing. In beginning, the task takes 6 seconds. In the end, the task
took 36 seconds. That seems not fair.
What's more interesting, after starting another instance of the same
program, the execution time has reported to drop to 6 seconds again (in
the first instance of the application!).
I analyzed the code and found out that the task contained a bunch of code
which generated a lot of C++ exceptions, which were catched and discarded
on an upper level of the code. After eliminating some code branches
causing the most of these exceptions the slowdown reduced (to 12 seconds
instead of 36), so I'm inclined to think there might be some relation.
So that's my question: is there any possibility of occuring an
incremental slowdown of an MSVC++ 7.1 application due to exception
handling code? What about interaction with another instance of the same
application?
There were also a couple of catch(...) and throw; (rethrow) statements
involved, might this make a difference? In some places a service function
is called from inside the catch(...) and the exception is rethrown inside
this function for better analysis (BTW, this trick did not work in MSVC++
6.0), might this make a difference?
Thanks for all of hints, we are really puzzled...
I'd suspect increased paging, heap fragmentation, etc.
--
Doug Harrison
Visual C++ MVP