By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,231 Members | 1,420 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,231 IT Pros & Developers. It's quick & easy.

Exceptions performance penalty

P: n/a
Hi!
Does the use of exception handling induce a performance penalty during
the execution of non exception handling code?

Regards,
/Michael

Jul 19 '05 #1
Share this Question
Share on Google+
7 Replies


P: n/a
> Does the use of exception handling induce a performance penalty
during the execution of non exception handling code?


The performacne-penalty is usually very slight;
not worth to be mentioned.
Jul 19 '05 #2

P: n/a
> Does the use of exception handling induce a performance penalty during
the execution of non exception handling code?


It depends on which compiler yuo are using. There are several ways a
compiler can deal with exceptions so there is no standard answer to this. On
some compilers there is no performance penalty as long as no exception is
thrown. On others there is always a certain performance penalty, even when
no exceptions are thrown.

--
Peter van Merkerk
peter.van.merkerk(at)dse.nl
Jul 19 '05 #3

P: n/a
"Peter van Merkerk" <me*****@deadspam.com> wrote in message news:<bj************@ID-133164.news.uni-berlin.de>...
Does the use of exception handling induce a performance penalty during
the execution of non exception handling code?


It depends on which compiler yuo are using. There are several ways a
compiler can deal with exceptions so there is no standard answer to this. On
some compilers there is no performance penalty as long as no exception is
thrown. On others there is always a certain performance penalty, even when
no exceptions are thrown.


In C++ Programming Language 3rd edition section 14.8 Stroustrup writes
that it is possible to implement exception handling in such a way that
there is no run time overhead when no exception is thrown but it is
hard.
There is generally some overhead as we have to keep trach for the
local objects whose constructors have run, so when exception is thrown
their destructors are called. Their is detailed discussion about this
in "More effective C++" by Scott Meyer
Jul 19 '05 #4

P: n/a
> > > Does the use of exception handling induce a performance penalty
during
the execution of non exception handling code?
It depends on which compiler yuo are using. There are several ways a
compiler can deal with exceptions so there is no standard answer to this. On some compilers there is no performance penalty as long as no exception is thrown. On others there is always a certain performance penalty, even when no exceptions are thrown.


In C++ Programming Language 3rd edition section 14.8 Stroustrup writes
that it is possible to implement exception handling in such a way that
there is no run time overhead when no exception is thrown but it is
hard.


It may be hard (but so is writing a C++ compiler), but there are C++
compilers which have implemented zero runtime overhead when no
exceptions are thrown.
There is generally some overhead as we have to keep trach for the
local objects whose constructors have run, so when exception is thrown
their destructors are called. Their is detailed discussion about this
in "More effective C++" by Scott Meyer


The same book also tells you not to take the performance penalty
estimation too seriously, as thing may improve in the future. This book
is already several years old, and things have improved compared to when
it was written.

The bottom line is that your mileage may vary; it depends on the C++
compiler you are using.

--
Peter van Merkerk
peter.van.merkerk(at)dse.nl

Jul 19 '05 #5

P: n/a
ha*************@yahoo.com (Hafiz Abid Qadeer) wrote in message news:<9c**************************@posting.google. com>...
"Peter van Merkerk" <me*****@deadspam.com> wrote in message news:<bj************@ID-133164.news.uni-berlin.de>...
Does the use of exception handling induce a performance penalty during
the execution of non exception handling code?


It depends on which compiler yuo are using. There are several ways a
compiler can deal with exceptions so there is no standard answer to this. On
some compilers there is no performance penalty as long as no exception is
thrown. On others there is always a certain performance penalty, even when
no exceptions are thrown.


In C++ Programming Language 3rd edition section 14.8 Stroustrup writes
that it is possible to implement exception handling in such a way that
there is no run time overhead when no exception is thrown but it is
hard.
There is generally some overhead as we have to keep trach for the
local objects whose constructors have run, so when exception is thrown
their destructors are called. Their is detailed discussion about this
in "More effective C++" by Scott Meyer


AFAIK, this is already done (in g++ at least).

It creates exception tables. From the value of program counter
you can understand in which function/scope you're in. For each
scope you already know which destructors have to be called and
using the stack address you delete the apropriate objects.

We suppose that you can get __builtin_return_address (LEVEL)
and __builtin_frame_address (LEVEL) for the ESP and EPC of the
caller of level LEVEL.

stelios
Jul 19 '05 #6

P: n/a
Michael Andersson <a9******@ida.his.se> wrote in message news:<JR*******************@newsc.telia.net>...
Hi!
Does the use of exception handling induce a performance penalty during
the execution of non exception handling code?

Regards,
/Michael


See similar thread on news:comp.lang.c++.moderated :
http://groups.google.com/groups?th=6b04463d1953921f

=====================================
Alex Vinokur
mailto:al****@connect.to
http://mathforum.org/library/view/10978.html
=====================================
Jul 19 '05 #7

P: n/a
> AFAIK, this is already done (in g++ at least).

It creates exception tables. From the value of program counter
you can understand in which function/scope you're in. For each
scope you already know which destructors have to be called and
using the stack address you delete the apropriate objects.


That's something I already thought of and I had the idea that the
supporting data-structure would make it possible to determine which
exception-specifiers take effect when the exception is thrown so that
ESs could be supported without any peformance penalty ! That wouldn't
be a reason to love the callow ES-concept, but I think that when the
performance-decreasing effect could be eliminated, they clearly would
be an advantage.
Jul 19 '05 #8

This discussion thread is closed

Replies have been disabled for this discussion.