On 26.02.2013 10:00, Ruben Van Boxem wrote: > 2013/2/26 Koehne Kai <[email protected] <mailto:[email protected]>> > > Hi there, > > For Qt 5.0 we've been packaging a 32bit mingw-builds toolchain with SJLJ > exception handling. However, it now became > clear that the performance penalty for SJLJ is quite heavy (e.g. 25% for > startup of a medium-sized application, up > to 3x slow down for a small test application, see also > https://bugreports.qt-project.org/browse/QTBUG-29653 ). I'm > therefore inclined to recommend a switch to a DW2 based version for Qt > 5.1. > > There's lots of bits and pieces about DW2 vs SJLJ exception handling on > the web, but I'd like to check with you > whether I got the following facts right: > > - SJLJ incurs a performance penalty even when no exceptions are thrown > at runtime. The penalty is >10% for typical > applications. > - DW2 potentially generates bigger libraries. The overhead however is > not big (< 10%) for typical applications. > - if using DW2, things will go wrong (crashing?) if one tries to throw > exceptions through stack frames not > compiled with DW2 (typical case: Windows callbacks). > - following from the above, one should never mix code compiled with > DW2, and code compiled with SJLJ, in one > project. > - mingw.org <http://mingw.org> has switched to DW2 since a while. > - For gcc 4.7/64 bit, only SJLJ is available. gcc 4.8 will feature SEH, > which solves the performance problems SJLJ > has. Anyhow, gcc 4.8 most probably won't feature SEH for 32 bit.
It's very easy to backport 64/seh support to 4.7.2 > > Anything I missed? > > > This is pretty complete. It is also the first time I saw figures that high in > the disadvantage of SJLJ EH. The testcase > is weird though: turning off exceptions (compiling with -fno-exceptions) > should remove all EH code and related slowdowns > if I'm not mistaken... There is a high lack of profiling in this discussion > about performance. There are literally tens > of other things that might be affecting performance. To name one thing, the > different mingw-builds version used in the > comparison. Not that I'm saying SJLJ may not be the cause, it's just not 100% > sure with the provided information. I'll > take a look myself tonight. > > If possible, it may be better to wait for GCC 4.8, so that your users aren't > surprised with the strong ABI break... > > Cheers, > > Ruben > > > > Thanks > > Kai > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb > _______________________________________________ > Mingw-w64-public mailing list > [email protected] > <mailto:[email protected]> > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > > > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb > > > > _______________________________________________ > Mingw-w64-public mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public > ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
