为什么 gprof 大大低估了程序的运行时间?

2024-01-12

我有这个程序需要 2.34 秒才能运行,而 gprof 说它只需要 1.18 秒。我在其他地方读过答案,表明如果程序受 I/O 限制,gprof 可能会出错,但这个程序显然不是。

对于我正在尝试分析的有用程序,也会发生这种情况。它并不特定于这个简单的测试用例。

(另外,在这种情况下,gprof 表示 main() 占用了超过 100% 的程序运行时间,这是一个非常愚蠢的错误,但并没有真正给我带来问题。)

$ cat test.c
int main() {
    int i;
    for (i=0;i<1000000000;i++);
}

$ gcc test.c -o test

$ time ./test

real    0m2.342s
user    0m2.340s
sys 0m0.000s

$ gcc test.c -o test -pg

$ time ./test

real    0m2.342s
user    0m2.340s
sys 0m0.000s

$ gprof test |head
Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  Ts/call  Ts/call  name    
101.33      1.18     1.18                             main

 %         the percentage of the total running time of the
time       program used by this function.

我建议放弃gprof并切换到oprofile。任何将检测插入到程序中的分析都会本质上影响性能,从而可能使结果出现偏差或无效。和oprofile您不必构建具有分析支持的程序或获取特殊的支持分析的库;它通过统计方法工作,基本上对指令指针进行采样(在内核协助下)并使用样本计数来估计每个函数花费了多少时间。

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

为什么 gprof 大大低估了程序的运行时间? 的相关文章

随机推荐

  • Python的importlib有什么意义?

    这是 方便包装 吗 https docs python org 2 library importlib html https docs python org 2 library importlib html只是提供另一种写法 import
  • Rails 4.1.6 资产管道未在生产中加载资产和 javascript

    我有一个 ruby on Rails Web 服务器 我正在尝试将其部署到生产中 我在生产中加载资源时遇到问题 css js 和图像 由于 原因 在开发中似乎工作正常 这是我的作品 rb Rails application configur
  • ASP.NET MVC 加上 Silverlight

    在我看来 对于兼具深度和广度功能的结构化开发 ASP NET MVC 和 Silverlight 有潜力打造一个功能强大的框架 具有卓越的 UI 粒度并减少 AJAX 暴露 你们中有人尝试过构建这样一个考虑到未来耐用性的堆栈吗 ASP NE
  • 如何使用“单独”关键字

    我无法找出关键字separateAda 及其深度概念 请举个小例子帮助我理解 假设我有一个嵌套过程 with ada text io use ada text io procedure main is procedure proc is b
  • 复选框仅适用于第一页 - 数据表、导轨

    Senario 所以基本上我正在使用 DataTables 并在其第一列上有复选框 我的数据表有多个页面 分页 问题 当我选中一个页面 可以是任何页面 上的几个框 并且还选中其他页面上的几个框时 仅当我在当前页面上时才会保存结果 我对 da
  • numpy 矩阵行/列上的函数应用

    我正在使用 Numpy 将数据存储到矩阵中 由于具有 R 背景 有一种极其简单的方法可以将函数应用于矩阵的行 列或两者 python numpy 组合有类似的东西吗 编写我自己的小实现不是问题 但在我看来 我提出的大多数版本都会比任何现有的
  • PHP 中的 is_null($x) 与 $x === null [重复]

    这个问题在这里已经有答案了 可能的重复 is null var 和 var null 有什么区别 https stackoverflow com questions 4662588 whats the difference between
  • ServiceStack OrmLite 如何实现外键/相关属性的自动设置?

    我创建了以下示例来测试外键 到目前为止 它运行良好 我希望能够做的是使用我构建的这个框架来设置关系的属性 并让它在保存父级时保存子对象并自动设置主键和外键 DataManager 类公开 Connection public class Da
  • 像 '%' 不接受 NULL 值

    我有一个根据用户输入构建的查询 通过 html 表单传递 它看起来像 简单的例子 Select From table Where table column like
  • 检测语言和 django locale-url

    我想部署一个英语和西班牙语网站并检测用户浏览器语言并重定向到正确的区域设置网站 我的网站是www elmalabarista com 我安装django localeurl https bitbucket org carljm django
  • .htaccess 文件很长可以吗?

    我在网站上向人们提供 URL 这些 URL 实际上指向一些丑陋的东西 在同一个网站上 http www mydomain com cool URL http www mydomain com cool URL实际上指向 我计划通过在需要时修
  • 为什么 iOS11 中 UIScreen.bounds 不正确

    请不要标记为重复 可用线程尚未提供答案 行为仅限 iOS11 将项目从 Xcode 8 更新到 Xcode 9 现在使用 iOS11 但仍然使用 Swift 3 我有以下经验 print UIScreen main bounds width
  • 在 PHP 5.4 中工作的 PHP 5.3 中出现错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 这是在 P
  • 如何处理绑定到自定义程序集对象数据源的 RDLC 报告中的空嵌套对象?

    我有一个 RDLC 报告 我将其直接以 PDF 形式呈现到响应流 而不是使用 ReportViewer 在呈现报表的代码中 它的 DataSource 绑定到自定义程序集中定义的 List Of ClassA 对象 这似乎在大多数情况下都有
  • 如何使用注释自动装配 RestTemplate

    当我尝试自动装配 Spring 时RestTemplate 我收到以下错误 nested exception is org springframework beans factory NoSuchBeanDefinitionExceptio
  • Facebook C# SDK ASP.Net 3.5 示例

    我被要求开发一个 Facebook 应用程序 允许当前系统的用户使用这个 Facebook 应用程序找到彼此 不幸的是 他们的要求是它必须在 ASP NET 3 5 中构建 更容易为客户分发 我是一名经验丰富的 PHP 开发人员 尽管我过去
  • Android SpeechRecognizer 音频录制错误

    我正在尝试在 Android 上使用 SpeechRecognizer 而不使用 Intent Dialog 它在大多数设备上工作正常 但某些设备返回音频录制错误 错误代码 3 并且没有此错误的详细信息 有什么解决办法或者原因吗 谢谢你 当
  • 伊伊。如何添加CSS“错误”类到表单提交的输入?

    我有 Yii 形式 有些字段是必需的 提交表单时 我需要将 CSS 类 错误 添加到文本输入中 我的代码
  • Firefox 不遵守 rel=stylesheet 链接的“disabled”属性

    我有一个网站需要加载两个主题 用户可以打开 关闭第二个主题 我目前正在通过使用来完成此任务disabled链接中的标签如下 然后我切换disabled在 JavaScript 中 这在 Safari Mac Chrome Mac Windo
  • 为什么 gprof 大大低估了程序的运行时间?

    我有这个程序需要 2 34 秒才能运行 而 gprof 说它只需要 1 18 秒 我在其他地方读过答案 表明如果程序受 I O 限制 gprof 可能会出错 但这个程序显然不是 对于我正在尝试分析的有用程序 也会发生这种情况 它并不特定于这