SjLj? Dwarf2-EH? とは
gccとかぜんぜん使わないんで、あんまりよく知らないんですが、
- SjLjの例外は「例外の送出は早いけど、try..catchや、デストラクタを持つオブジェクトのフレームを通るたびにコストがかかる」方式
- Dwarf2-EHは「例外の送出は遅いけど、try..catchなどでのコストは0」
らしいです。
Xtalでは、SjLj方式のような、通るたびにコストがかかる環境を考慮して、try..catchはなるべく通らないようにしてたんですが、デストラクタがあるオブジェクト云々は考慮してませんでした。
将来的には、SjLjを使っても、ここまで速度が落ちないようにはしたいところですが、とりあえず、Dwarf2-EHが使われるようにしてください、ということでお願いします。
gccでコンパイルすると、異様に遅い
_Unwind_SjLj_Register _Unwind_SjLj_Unregister がプロファイル上位に来るような場合に、VCの10倍くらい遅い。困った。