Помогите объяснить результаты профилирования [STL] - PullRequest
1 голос
/ 10 августа 2010

Я профилирую недавнюю программу, в которой преобладает чтение файлов. Я немного запутался в том, как интерпретировать результаты. Если бы кто-то мог объяснить мне, что это за четыре главных функции, это бы мне очень помогло. Заранее спасибо!

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 25.00      0.95     0.95                             _Unwind_SjLj_Register
 15.79      1.55     0.60                             std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_float(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, std::string&) const
 10.26      1.94     0.39                             std::string::_M_mutate(unsigned int, unsigned int, unsigned int)
 10.00      2.32     0.38                             _Unwind_SjLj_Unregister

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Первый и последний предназначены для обработки исключений; они генерируются компилятором для регистрации объектов, чьи деструкторы должны вызываться, если исключение покидает текущую область. Вы могли бы избежать вызовов этих функций, если бы вы могли реструктурировать свой код, чтобы избежать создания исключений или вызова функций, которые могут генерировать, в течение времени жизни объектов с нетривиальными деструкторами. Это часто невозможно, хотя.

Вторая - это внутренняя функция для анализа значения float из входного потока.

Третья - это внутренняя функция для изменения размера строки, возможно, используемая внутренне при синтаксическом анализе потока.

1 голос
/ 10 августа 2010

num_get используется при преобразовании чисел в строки t, и, как я предполагаю, функция mutate изменяет размер строки.поэтому я думаю, что ваша программа читает строки и конвертирует их в числа.Я думаю, что Unwind связан с обработкой исключений.Не могу сказать больше, не увидев код.

...