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

Reply via email to