帮助解释分析器结果[STL]

时间:2010-08-10 18:09:08

标签: c++ stl profiling g++ cygwin

我正在分析最近以File read为主的程序。我对如何解释结果感到困惑。如果有人能向我解释这四大功能是什么,那对我有很大帮助。提前谢谢!

  %   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 个答案:

答案 0 :(得分:3)

第一个和最后一个用于异常处理;它们由编译器生成,用于注册在异常离开当前范围时必须调用析构函数的对象。如果您可以重构代码以避免抛出异常,或者在具有非平凡析构函数的对象的生命周期内调用可能抛出的函数,则可能可以避免对这些函数的调用。但这通常是不可能的。

第二个是用于解析输入流中的float值的内部函数。

第三个是调整字符串大小的内部函数,可能是在解析流时在内部使用的函数。

答案 1 :(得分:1)

num_get用于从字符串t数字的转换,我猜的mutate函数以某种方式改变字符串的大小。所以我猜你的程序正在读取字符串并将它们转换为数字。我猜想Unwind的东西与异常处理有关。如果没看到代码就不能说更多。