| Store | Cart

Working around a lack of 'goto' in python

From: Isaac To <k...@csis.hku.hk>
Wed, 10 Mar 2004 13:36:11 +0800
>>>>> "Roy" == Roy Smith <roy at panix.com> writes:

    Roy> I think what you've demonstrated here is not so much that
    Roy> exceptions are a bad thing, but that C++'s implementation of
    Roy> exceptions (like most things in C++) is overly complicated.  I find
    Roy> it interesting that many people who come from a C++ background
    Roy> (especially those who migrated from C) tend to dislike exceptions.
    Roy> It must have been something in the water when they were growing up
    Roy> :-)

In Python, function calls and returns are actually quite slow (because they
has to allocate a dictionary)---just like everything else.  So the slightly
slower exception handling time does not add to the equation.  In C++,
function calls and returns are extremely fast (they just add and subtract a
constant from the stack pointer and save the return address).  While
exceptions are implemented in a way that is also "fast" (e.g., typical
implementation uses the faulting address to look up an "exception table" to
find the location where roll-back of variables are needed, and then look up
a table to find the handlers if any, and after that go up one level), it is
nowhere near a normal function returns.  So in C++, exceptions are
considered heavy-weight.  It is by no means that C++ exceptions are "overly
complicated": it is in fact less featureful than that of Python (e.g., no
stack trace is kept once you catch it, unlike in Python where you can
re-throw and still keep the stack trace).  When you love speed, there is a
lot less that you can do.

Regards,
Isaac.

Recent Messages in this Thread
Brett Mar 06, 2004 06:18 pm
Andrew Koenig Mar 06, 2004 06:30 pm
Carmine Noviello Mar 06, 2004 06:41 pm
Jeff Schwaber Mar 06, 2004 06:41 pm
Peter Otten Mar 06, 2004 06:48 pm
Rene Pijlman Mar 06, 2004 06:49 pm
Christian Tismer Mar 06, 2004 08:50 pm
Roy Smith Mar 06, 2004 09:16 pm
Stephen Horne Mar 08, 2004 05:01 am
Dan Bishop Mar 06, 2004 11:23 pm
David M. Cooke Mar 07, 2004 08:49 am
Stephen Horne Mar 07, 2004 06:35 pm
Roy Smith Mar 07, 2004 06:54 pm
Stephen Horne Mar 07, 2004 07:57 pm
Roy Smith Mar 07, 2004 08:49 pm
Stephen Horne Mar 08, 2004 02:54 am
benjamin schollnick Mar 08, 2004 03:38 am
Stephen Horne Mar 08, 2004 05:10 am
Roger Binns Mar 07, 2004 10:33 pm
Roy Smith Mar 08, 2004 02:11 am
Roger Binns Mar 08, 2004 05:09 am
Georgy Mar 08, 2004 09:09 am
Jeff Epler Mar 08, 2004 02:50 pm
Mel Wilson Mar 08, 2004 03:43 pm
Roger Binns Mar 08, 2004 08:43 pm
Donn Cave Mar 08, 2004 10:46 pm
Roger Binns Mar 09, 2004 12:11 am
Stephen Horne Mar 08, 2004 03:30 am
Stephen Horne Mar 08, 2004 05:29 am
Y2KYZFR1 Mar 08, 2004 04:41 pm
Lou Pecora Mar 08, 2004 04:59 pm
Y2KYZFR1 Mar 09, 2004 04:36 pm
Joe Mason Mar 09, 2004 04:57 pm
Roy Smith Mar 09, 2004 05:25 pm
Joe Mason Mar 09, 2004 06:53 pm
Roy Smith Mar 09, 2004 09:05 pm
Roger Binns Mar 10, 2004 04:23 am
Roy Smith Mar 10, 2004 01:52 pm
Isaac To Mar 10, 2004 05:36 am
Jeff Epler Mar 10, 2004 01:05 pm
Isaac To Mar 10, 2004 03:58 pm
gabor Mar 10, 2004 04:34 pm
Donn Cave Mar 10, 2004 05:49 pm
Stephen Horne Mar 11, 2004 03:02 am
Jacek Generowicz Mar 11, 2004 11:40 am
Stephen Horne Mar 11, 2004 02:50 pm
Stephen Horne Mar 09, 2004 09:43 pm
Roy Smith Mar 09, 2004 09:55 pm
Stephen Horne Mar 10, 2004 12:41 am
Isaac To Mar 10, 2004 05:16 am
Christopher A. Craig Mar 08, 2004 07:54 pm
leeg Mar 09, 2004 01:34 am
Stephen Horne Mar 09, 2004 09:52 pm
leeg Mar 10, 2004 02:46 pm
Stephen Horne Mar 10, 2004 04:58 pm
Roger Binns Mar 10, 2004 06:14 pm
David MacQuigg Mar 09, 2004 11:26 pm
Anton Vredegoor Mar 10, 2004 10:11 am
Messages in this thread