使用 解释 gprof 输出

2024-07-01

我试图在我的程序中找到性能问题,从而通过分析来检测代码。 gprof 创建一个如下所示的平面配置文件:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 27.97      4.10     4.10                             std::_Deque_iterator<char, char&, char*>::_Deque_iterator(std::_Deque_iterator<char, char&, char*> const&)
  6.96      5.12     1.02                             std::_Deque_iterator<char, char&, char*>::difference_type std::operator-<char, char&, char*>(std::_Deque_iterator<char, char&, char*> const&, std::_Deque_iterator<char, char&, char*> const&)
  5.12      5.87     0.75                             std::__deque_buf_size(unsigned int)
  4.23      6.49     0.62                             std::_Deque_iterator<char, char&, char*>::operator+=(int)
  3.41      6.99     0.50                             std::deque<char, std::allocator<char> >::begin()
  1.91      7.27     0.28     7896     0.04     0.04  std::vector<MyClass, std::allocator<MyClass> >::_M_insert_aux(__gnu_cxx::__normal_iterator<MyClass*, std::vector<MyClass, MyClasst> > >, MyClassconst&)
  1.91      7.55     0.28                             std::deque<char, std::allocator<char> >::size() const
  1.91      7.83     0.28                             std::_Deque_iterator<char, char&, char*>::_S_buffer_size()

接下来是许多行,时间较少。

第一个问题:相信 std::deque 似乎存在问题是否是一个有效的假设?问题是:我知道我们正在使用 std::deque,但我不知道它的用法<char>.

如果这个假设成立,那么查看调用堆栈并查看此双端队列的使用位置似乎是有意义的。然而,所有有关的条目deque<char>东西只能被调用<spontaneous>!

仅举一个例子:

index % time    self  children    called     name
                                                 <spontaneous>
[1]     28.0    4.10    0.00                 std::_Deque_iterator<char, char&, char*>::_Deque_iterator(std::_Deque_iterator<char, char&, char*> const&) [1]

有什么方法可以了解有关此双端队列的更多信息吗?

感谢您的任何提示!


显然,当 gprof 无法计算出调用函数时,它会使用自发性。我会尝试使用 -pg 重新编译所有代码(您是否可能错过了一些文件?)。另外,请确保您已打开优化。内联通常会使这些小函数消失在调用函数中,这通常更有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 解释 gprof 输出 的相关文章

  • 如何将流写入内存流?

    public void doprocess TcpClient client MemoryStream ms new MemoryStream Stream clStream client GetStream byte buffer 1 n
  • 类内枚举前向声明是否可能? [复制]

    这个问题在这里已经有答案了 我知道在 C 11 中可以转发声明枚举类型 如果提供了存储类型 例如 enum E short void foo E e enum E short VALUE 1 VALUE 2 但我想转发声明一个类中定义的枚举
  • 规避模板专业化

    假设我是某个模板库的用户 CTL 它定义了一个模板 命名为 Hector template
  • 在 C++ 中将注册表值设置为宽字符串 (WCHAR)

    我正在尝试在 C 中向注册表添加宽字符串 问题是RegSetValueEx 函数不支持宽字符 仅支持BYTE type BYTE unsigned char WCHAR myPath C exe RegSetValueExA HKEY CU
  • 复制空对象是否涉及访问它

    灵感来自this https stackoverflow com a 48273386 4832499问题 struct E E e E f e Accesses e To access https timsong cpp github i
  • UWP 导航 (Template10)、枢轴控制、多帧

    我正在尝试在我的 UWP 应用程序中实现以下导航样式 使用 Template10 但正在努力如何使用多个帧作为独立的历史堆栈 在枢轴的每个框架内 我希望有一个独立的框架 它有自己的历史记录和后堆栈 只能通过枢轴在框架之间导航 我正在考虑使用
  • 使用 X509 证书对多个收件人进行 XML 加密和解密

    我已经成功地使用 MSDN 上的示例来加密和解密 xml 文档 http msdn microsoft com en us library ms229744 aspx http msdn microsoft com en us librar
  • 为什么 _popen 在这里可以工作,而 boost::process 却不能?

    我在 Windows 上使用 popen 有以下工作代码 m pGNUPlot popen gnuplot bin gnuplot exe w fprintf m pGNUPlot set term win n fprintf m pGNU
  • 如何确定 MySQL 中某些查询的优先级?

    我对一个高度竞争的 MySQL 数据库有大量的后台读取和写入 而用户读取的数量要少得多 有没有办法将某些查询 用户查询 标记为高优先级 以便它们优先于后台查询 我希望用户响应能力较高 但并不真正关心后台查询 Thanks MySQL支持in
  • 在哪里可以查看 LINQ 源代码?

    我需要编写自己版本的 except 方法 或者至少以某种方式修改 LINQ 方法的工作方式 我正在与大型自定义对象列表进行比较 并且需要将匹配项从列表 A 连接到列表 B 我认为除外哈希表构建是进行比较的最快方法 但该方法只会返回非匹配项
  • Asp.net MVC 2 缓存

    我目前正在使用 c 中的 asp net mvc 2 开发一个网站 我从未使用过 MVC 中的缓存功能 并且想将其应用到用户个人资料页面 此页面上的内容很少更改 唯一需要实时的部分是用户最近发布的帖子列表 我使用linq to sql从数据
  • 仅仅“抛出”一次捕获有好处吗?

    与一位同事就他将大部分功能包装在 try catch 中的做法进行了 激烈辩论 但 catch 中只有一个 抛出 例如 Private sub foo try Do something catch throw And nothing els
  • C# 我可以访问没有完整限定名称的枚举吗

    我有一个 C 枚举类型 它以非常长的限定名称结尾 例如 DataSet1 ContactLogTypeValues ReminderToFollowupOverdueInvoice 为了便于阅读 如果我可以告诉一个特定的函数只使用名称的最后
  • 在 C++ 中调用函数有多少开销?

    许多文献都谈到使用内联函数来 避免函数调用的开销 但我还没有看到可量化的数据 函数调用的实际开销是多少 即通过内联函数我们可以实现什么样的性能提升 在大多数架构上 成本包括将所有 或部分 或没有 寄存器保存到堆栈 将函数参数推送到堆栈 或将
  • 将 HTML 渲染为图像

    我正在基于动态输入和裁剪图像生成优惠券 并且现在使用 ntml 和 css 显示优惠券 问题是 打印这已成为一个问题 因为打印时背景如何消失以及其他问题 所以我认为最好的解决方案是能够基于html生成图像 或者设置某种接受字符串和图像的模板
  • 使用本机 Win32 读取“C”中的文本文件(Unicode)

    我有一个使用 CreateFile 和 WriteFile 创建的面向行的文本文件 Unicode 使用 ReadFile 以二进制流形式读取该文件非常简单 但需要额外的低级处理才能将其分成几行 是否有 Win32 函数可以为我执行此操作
  • C:分段错误:GDB:<读取变量时出错>

    我有一个函数shortestPath 它是Dijkstra算法的修改实现 用于我正在为comp2类开发的棋盘游戏AI 我浏览了网站并使用 gdb 和 valgrind 我确切地知道段错误发生的位置 实际上几个小时前就知道了 但无法弄清楚是什
  • 如何将 ContextMenuStrip 添加到 ToolStripMenuItem

    我希望当我单击菜单项时 显示一个包含 删除 重命名 等项目的上下文菜单 当右键单击菜单项时 如何将自身绑定为上下文菜单 我脑海中跳出的第一个想法是连接一些MouseDown事件于ToolStripMenuItem并显示第二个ContextM
  • 从构造函数调用虚函数[重复]

    这个问题在这里已经有答案了 我正在阅读有效的C https en wikipedia org wiki Scott Meyers 还有 第 9 条 在构造或销毁期间切勿调用虚函数 我想知道我的代码是否正确 即使它违反了这条规则 using
  • 如何防止禁用的 ToolStripMenuItem 在鼠标悬停时显示边框?

    Yes exactly same as the title in my project some of toolstripmenuitems were disabled But when i bring the cursor over th

随机推荐

  • 为什么我的侧载应用程序在几天后停止工作?

    所以我实际上对 iOS 开发有点陌生 然而 在学习如何操作后 我已经制作了一些应用程序 但我注意到的一件事是 如果我使用手机来测试我的应用程序 该应用程序将在插入时运行 也许一两天后 但在那之后 如果我尝试打开它 它就会停止工作并崩溃 就像
  • 使用lastModified日期搜索DAM资产和Cq页面|查询生成器

    我正在根据上次修改日期查询 cq 页面和资产 以下是必须放入查询生成器调试器中的文本 fulltext geometrix 1 group p or true 1 group 1 group p and true 1 group 1 gro
  • 使用递归求数字之和

    对Java来说相当陌生 但我正在编写一个教程 其中我必须使用递归找到用户输入整数的数字总和 到目前为止 这是我的代码 公开课其他 public static void main String arg Scanner s new Scanne
  • 无法使用带有 socket.io 的媒体源从媒体记录器跳转到流

    当首先加载视频观察客户端然后加载网络摄像头客户端时 以下代码可以正常工作 但是 如果顺序交换或以任何方式中断流 例如通过刷新任一客户端 则流将失败并且媒体源会将其就绪状态更改为关闭 我的假设是 在开始时接收的视频需要初始化标头才能启动 并且
  • R:使用字符串作为参数来改变 dplyr 中的动词

    我正在构建一个闪亮的应用程序 它需要允许用户定义新的绘图变量 具体来说 我想允许用户定义要在 mutate 动词中使用的表达式 服务器接收文本形式的表达式 我想知道如何让 mutate 在 dplyr 0 7 中执行它 我可以使用 muta
  • 循环不断在字符串中添加空格?

    我有以下代码 sHexPic string to hex sPic sHexPic insert sHexPic begin 2 sHexPic insert 2 我想知道如何将其放入计数循环中并在每第二个字符后添加一个空格 到目前为止 这
  • HTACCESS 404 错误无法正常工作

    问题 在此服务器上找不到请求的 URL welcome php 此外 尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误 事情是这样的 当我访问 www mysite com page 时它工作正常 如果
  • Symfony 管理生成器原则executeCreate

    感谢您对此的帮助 我对 Symfony 框架非常陌生 所以只是想了解一下它 我希望能够拦截从管理区域提交的表单并修改数据 这是我到目前为止所得到的 基本形式 apps backend modules proposition actions
  • Google Chrome/Safari 相同的浏览器名称和版本!

    我有一个 asp net 网站 我在其中检查支持的浏览器 那是我的用户 Request Browser Browser 浏览器名称 和 Request Browser MajorVersion 浏览器版本 这里的问题是浏览器 Safari
  • Drupal 用户配置文件页面中的自定义菜单选项卡

    我想在用户个人资料页面顶部的 查看 编辑 文件 菜单链接旁边添加一个菜单项 当用户单击它时 它的行为应该与其他页面类似 因为它不仅启动到新页面 而且他们单击的菜单项 我们称之为 时髦按钮 会变成灰色 并且用户仍停留在新页面中 用户个人资料区
  • 如何向 CSV 文件添加列?

    我有以下 CSV 文件 header 1 header 2 header 3 summin 1 summin 2 summin 3 summin 4 summin 5 summin 6 我如何使用 CSV 类附加一列数据 结果将如下所示 h
  • C# 中线程之间发送消息

    如何在线程之间发送和接收消息 例如 一种解决方案是共享并发队列 尽管它的名称 并发队列 http msdn microsoft com en us library dd267265 aspx 这将允许您将一个对象从一个线程入队 并让另一个线
  • JavaScript 作为 HTML 属性是不好的做法吗?

    例子 https stackoverflow com a 372 89566 710887 https stackoverflow com a 37289566 710887 我看到这种情况越来越频繁地发生 我总是被教导要将 javascr
  • Apache2:如何记录拒绝的连接和客户端超时

    我正在对使用 Apache2 运行的服务进行一些负载测试 我的负载测试工具的默认超时为 30 秒 当我以每秒 1 个请求的负载运行该工具一分钟时 它报告 40 个请求成功 并有 200 个 OK 响应 并且有 20 个请求被取消 因为等待标
  • Jmeter json 路径提取器 - 如何从提取的值中删除 [ ]

    From json questions tagged json token id token id 82903430 f9b3 4f4b 9efa ee1b991cb735 我正在提取token id using json question
  • A* 搜索算法

    我想澄清以下 A 搜索示例的一些内容 用红色省略号突出显示的部分是我不理解的区域 看起来 S B f 2 6 8已被采取 移动 复制自Expand S 上 并用于Expand A 看来还 S A X f 1 4 5 10已被采取 移动 复制
  • Typescript 字符串文字联合类型

    我有一个类属性 其类型是多个字符串文字的联合 public reaction haha wow angry sad like 我想做的是将这些字符串定义在某种数组的其他位置 然后在属性定义中使用该数组 所以像这样 allowedString
  • 将组合框双向绑定到静态属性

    编辑 所以 我想我的代码是正确的 您所有答案中的代码片段也是正确的 感谢那 我的问题是我的开发机器运行 NET4 5 其行为不同 同样的程序 针对 NET4 0 编译 在 NET4 0 的机器上运行正确 但在 NET4 5 的机器上运行不正
  • Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

    我已经使用转储了 mongodb 集合mongodump命令 输出是一个转储目录 其中包含以下文件 dump coll bson coll metadata json 如何将导出的文件打开到在 python 中工作的字典数组中 我尝试了以下
  • 使用 解释 gprof 输出

    我试图在我的程序中找到性能问题 从而通过分析来检测代码 gprof 创建一个如下所示的平面配置文件 Flat profile Each sample counts as 0 01 seconds cumulative self self t