471,582 Members | 1,438 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,582 software developers and data experts.

Exceptions performance penalty

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
7 9115
> 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
> 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
"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
> > > 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
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
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
> 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.

Similar topics

59 posts views Thread by kk_oop | last post: by
1 post views Thread by Peter Bär | last post: by
6 posts views Thread by RepStat | last post: by
9 posts views Thread by Alvin Bruney [MVP] | last post: by
18 posts views Thread by Digital Puer | last post: by
6 posts views Thread by GiddyUpHorsey | last post: by
40 posts views Thread by Mark P | last post: by
reply views Thread by lumer26 | last post: by
1 post views Thread by lumer26 | last post: by
reply views Thread by lumer26 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.