帮助解释分析器结果 [STL]
Posted
技术标签:
【中文标题】帮助解释分析器结果 [STL]【英文标题】:Help with explaining profiler results [STL] 【发布时间】:2010-08-10 18:09:07 【问题描述】:我正在分析一个最近以文件读取为主的程序。我对如何解释结果感到困惑。如果有人可以向我解释这四大功能是什么,那将对我有很大帮助。提前致谢!
% 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
【问题讨论】:
【参考方案1】:第一个和最后一个用于异常处理;它们由编译器生成,用于注册在异常离开当前范围时必须调用其析构函数的对象。如果您可以重构代码以避免在具有非平凡析构函数的对象的生命周期内引发异常或调用可能引发的函数,则您可能能够避免调用这些函数。不过,这通常是不可能的。
第二个是从输入流中解析float
值的内部函数。
第三个是调整字符串大小的内部函数,可能是解析流时内部使用的函数。
【讨论】:
啊,谢谢。是的,我正在使用 ifstream 从文件中读取大约 700k 的浮点数。也许我应该尝试 scanf...谢谢【参考方案2】:num_get 用于从字符串 t 数字进行转换,而我猜想的 mutate 函数会以某种方式改变字符串的大小。所以我猜你的程序正在读取字符串并将它们转换为数字。我猜 Unwind 的东西与异常处理有关。不看代码就不能多说。
【讨论】:
以上是关于帮助解释分析器结果 [STL]的主要内容,如果未能解决你的问题,请参考以下文章