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 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.
Anything I missed?
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]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public