> > I'm using the rubenvb with no "dw2" in the archive name, so I suppose I'm
> > using SJLJ in 32bit and SEH in 64bit?
>
> I guess so.
>
> > Can there be a 30% speed difference just due to SJLJ, even if I do not use
> > any
> > exception handling in my code?
>
> Yes, actually I had measured about 25% slow down e.g. in creator startup, and
> for the test case in the bug report it's even 300%.
>
> The jumps implementing SJLJ are automatically added to any code block that
> _might_ throw, or propagate, an exception. So you don't have to have any try
> {} catch {} blocks to get the slowdown, I understood.
>
> > Other libs may use exceptions, but my app is
> > running my code 99% of the time, as libs are only used for GUI and during
> > initialization.
>
> Well, it's enough if you're using e.g. QtCore, which is compiled with
> exception handling enabled. Only if you do -fno-exceptions for all libs you
> should be on the safe side, performance wise.
>
> > What do I risk with dw2? I've read the main guidelines, but my understanding
> > of exception handling and stack frame unwinding is too short to understand
> > if this will impact my work.
>
> There are problems (crashes) with dwarf as soon as you actually use
> exceptions, and you want them to propagate to stacks not compiled with the
> same compiler. Also Jonathan Liu reported issues with
> LoadLibrary/FreeLibrary, see http://qt-project.org/wiki/MinGW-64-bit .
>
> Anyway, we plan to switch to a dwarf toolchain for official Qt packages with
> 5.1 onwards.
Kai, Ruben: fabulous info, muchas gracias.
When building on Windows (Win7 32-bit, Win8 64-bit) I primarily use gcc to
compile C stuffage and don't think much about dwarf vs. sjlj exception
handling. Ah, but luckily things morph and I now find myself downloading
mingwbuilds `Qt-5.0.2-preview-x{32,64}.7z`. Are my 4.8.0 assumptions valid?
1) For 32/64-bit C code, dwarf vs. sjlj is a don't care and there is no
measurable performance difference.
2) For 32/64-bit C code, win32 thread model is faster and doesn't create client
code dependency on `libwinpthread-1.dll`
3) For 32-bit C++ code, on must make dwarf/sjlj and posix/win32 threading
tradeoffs. Qt 5.1+ currently recommends dwarf+posix threading combo.
4) For 64-bit C++ code, the current "best" recommendation is dwarf+seh when
using 4.8.0+ unless one has other constraints.
Any other important tradeoffs/considerations?
Jon
---
Fail fast. Fail often. Fail publicly. Learn. Adapt. Repeat.
http://thecodeshop.github.com | http://jonforums.github.com/
twitter: @jonforums
------------------------------------------------------------------------------
Own the Future-Intel® Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest.
Compete for recognition, cash, and the chance to get your game
on Steam. $5K grand prize plus 10 genre and skill prizes.
Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public