[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Poor exception handling performance

From: Mears
Subject: Poor exception handling performance
Date: Sat, 27 Oct 2007 04:49:33 -0000
User-agent: G2/1.0

I spent some time profiling exception performance on Solaris 10 with
Sun's CC and two different versions of g++.  The setup was a class
that threw an exception (an int value) in its constructor if an
argument was out of range.  The main program basically dynamically
allocated objects of that type a variable number of times.  I tested
three different scenarios:

1.  Exception not thrown, and no try/catch in the main program
2.  Exception not thrown, and a try/catch surrounding the "new"
3.  Exception thrown, and a try/catch surrounding the "new" statement
(catch was a no-op).

The compilers I used were (information from version options):
CC - Sun C++ 5.8 Patch 121017-10 2007/02/21
g++ - 3.4.3 (csl-sol210-3_4-brach+sol_rpath)
g++ - 2.95.3 20010315 (release)

The performance of g++ when not throwing an exception (scenarios 1 &
2) was acceptable IMO.  CC definitely had an edge, but all were
quick.  However, when I started testing scenario 3, g++ was
horrendous.  For example , when calling the constructor 1,000,000
times (and thus throwing 1,000,000 exceptions), on average CC
completed the test program in 2.3 seconds, g++ 2.95.3 completed in
15.9 seconds, and g++ v3.4.3 completed in 22.1 seconds.  I was
extremely surprised to see g++ nearly 10 times slower at handling
throw statements than CC, especially since it was much closer with
exception overhead when not throwing.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]