_Unwind_SjLj_Register \ _Unwind_SjLj_Unregister
От: WirBi  
Дата: 02.03.06 22:54
Оценка:
Всем доброго времени суток!

У меня есть вопрос. Я компилирую свою библиотеку с включенным профайлингом, получаю статистику и вдруг неожидано вижу там вот эти две, я даже не знаю, можно ли это назвать функциями:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  us/call  us/call  name    
  4.65      6.90     0.34                             _Unwind_SjLj_Register
  0.41      7.29     0.03                             _Unwind_SjLj_Unregister


Я понимаю, что цифры довольно маленькие и оптимизировать в этом месте странно, но что это такое? Я это не просил, и мне интересно зачем это, и можно ли от этого избавится?

Компилятор: mingw 3.4.2
Re: _Unwind_SjLj_Register \ _Unwind_SjLj_Unregister
От: Аноним  
Дата: 25.05.09 12:27
Оценка:
Здравствуйте, WirBi, Вы писали:

WB>Всем доброго времени суток!


WB>У меня есть вопрос. Я компилирую свою библиотеку с включенным профайлингом, получаю статистику и вдруг неожидано вижу там вот эти две, я даже не знаю, можно ли это назвать функциями:


WB>
WB>Each sample counts as 0.01 seconds.
WB>  %   cumulative   self              self     total           
WB> time   seconds   seconds    calls  us/call  us/call  name    
WB>  4.65      6.90     0.34                             _Unwind_SjLj_Register
WB>  0.41      7.29     0.03                             _Unwind_SjLj_Unregister
WB>


WB>Я понимаю, что цифры довольно маленькие и оптимизировать в этом месте странно, но что это такое? Я это не просил, и мне интересно зачем это, и можно ли от этого избавится?


WB>Компилятор: mingw 3.4.2


присоединяюсь к вопросу
Re: _Unwind_SjLj_Register \ _Unwind_SjLj_Unregister
От: tonykent  
Дата: 25.05.09 12:47
Оценка:
WB>Я понимаю, что цифры довольно маленькие и оптимизировать в этом месте странно, но что это такое? Я это не просил, и мне интересно зачем это, и можно ли от этого избавится?

WB>Компилятор: mingw 3.4.2

1) Спроси у компилятора
2) Выключи и не используй исключения.
Re: _Unwind_SjLj_Register \ _Unwind_SjLj_Unregister
От: Antikrot  
Дата: 25.05.09 12:55
Оценка:
Здравствуйте, WirBi, Вы писали:

WB> _Unwind_SjLj_Register

WB> _Unwind_SjLj_Unregister

WB>Я понимаю, что цифры довольно маленькие и оптимизировать в этом месте странно, но что это такое? Я это не просил, и мне интересно зачем это, и можно ли от этого избавится?


видимо реализация некоторых helper-функций для stack-unwinding'а при реализаций исключений методом setjmp/longjmp.
искать в ключах как это вырубить (и в гугле чем это грозит), или вообще исключения отключить
Re[2]: _Unwind_SjLj_Register \ _Unwind_SjLj_Unregister
От: zaufi Земля  
Дата: 25.05.09 13:15
Оценка:
Здравствуйте, Antikrot, Вы писали:

A>Здравствуйте, WirBi, Вы писали:


WB>> _Unwind_SjLj_Register

WB>> _Unwind_SjLj_Unregister

WB>>Я понимаю, что цифры довольно маленькие и оптимизировать в этом месте странно, но что это такое? Я это не просил, и мне интересно зачем это, и можно ли от этого избавится?


A>видимо реализация некоторых helper-функций для stack-unwinding'а при реализаций исключений методом setjmp/longjmp.

она самая
помнится в начале третих версий в gcc был переписан механизм обработки исключений, но глюков в ранних версиях было полно и мы делали свою сборку gcc собирая его с --enable-sjlj-exceptions (так вроде назывался ключик для ./configure)
в бинарях сгенеренных gcc 4.3.3 (думается мне и всех 4.x) таких символов не замечено

A>искать в ключах как это вырубить (и в гугле чем это грозит), или вообще исключения отключить
Re: _Unwind_SjLj_Register \ _Unwind_SjLj_Unregister
От: 0xDEADBEEF Ниоткуда  
Дата: 25.05.09 15:40
Оценка:
Здравствуйте, WirBi, Вы писали:

WB>Я понимаю, что цифры довольно маленькие и оптимизировать в этом месте странно, но что это такое?

Это регистрация/дерегистрация обработчика исключения для данного стекового фрейма.

WB>Я это не просил, и мне интересно зачем это, и можно ли от этого избавится?

Избавиться — можно запретив исключения. Опция -fno-exceptions
Или же, пересобрать GCC c поддержкой DWARF-exceptions. Правда, у этого вида исключений есть проблемы, когда исключение пересекает границы модуля.
__________
16.There is no cause so right that one cannot find a fool following it.
Re[2]: _Unwind_SjLj_Register \ _Unwind_SjLj_Unregister
От: Mazay Россия  
Дата: 27.05.09 06:17
Оценка:
Здравствуйте, 0xDEADBEEF, Вы писали:

DEA>Здравствуйте, WirBi, Вы писали:


WB>>Я понимаю, что цифры довольно маленькие и оптимизировать в этом месте странно, но что это такое?

DEA>Это регистрация/дерегистрация обработчика исключения для данного стекового фрейма.

WB>>Я это не просил, и мне интересно зачем это, и можно ли от этого избавится?

DEA>Избавиться — можно запретив исключения. Опция -fno-exceptions
DEA>Или же, пересобрать GCC c поддержкой DWARF-exceptions. Правда, у этого вида исключений есть проблемы, когда исключение пересекает границы модуля.

Вот здесь:

SJLJ or Dwarf-2 Unwinding:
As a general rule, you should choose the default SJLJ packages, unless you know you need faster exception handling and can guarantee you'll never need to unwind through non-DW2-compiled stack frames (such as a Windows callback). If you chose the DW2 packages, consider removing the "-dw2" suffix from the program names. See README-gcc-tdm.txt, included in the core package, for further notes on this topic.

Исключения Dwarf-2 не дают никакого пенальти по производительности если исключение не было фактически вызвано. Потому "faster exception handling". Проблем с броском из другой DLL-ки вроде бы уже нет, но у топикстартера древняя версия MinGW, так что там эта проблема скорее всего еще не решена. Как вариант качнуть новую верисю по приведенной мной выше ссылке. И полюбому есть проблема с броском исключеий сквозь стэк в котором есть функции, собраные с не DW2 исключениями. Например такое может быть при использовании колбэков: "unwind through non-DW2-compiled stack frames (such as a Windows callback)".
Главное гармония ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.