令人困惑的 gprof 输出

2023-12-07

I ran gprof在一个 C++ 程序上16.637s, 根据time(),我得到了第一行输出:

%   cumulative   self              self     total           
time   seconds   seconds    calls   s/call   s/call  name    
31.07      0.32     0.32  5498021     0.00     0.00  [whatever]

为什么会列出31.07%如果只需要时间.32秒?这是每次通话的时间吗? (这不是自己打电话吗?)

这是我第一次使用gprof,所以请善待:)

编辑:通过向下滚动,gprof 似乎只认为我的程序需要 1.03 秒。为什么它会犯这么大的错误?


结果瓶颈出现在文件 I/O 中(请参阅std::ifstream 是否比 FILE 慢得多?)。我转而读取缓冲区中的整个文件,速度大大加快。

这里的问题是 gprof 在等待文件 I/O 时似乎没有生成准确的分析(请参阅http://www.regatta.cs.msu.su/doc/usr/share/man/info/ru_RU/a_doc_lib/cmds/aixcmds2/gprof.htm)。实际上,seekg and tellg甚至不在分析列表中,而且它们是瓶颈!

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

令人困惑的 gprof 输出 的相关文章

  • Qt 和 Sqlite 示例

    我正在寻找一些使用 Qt 的示例代码 它是带有 Sqlite 驱动程序的 SQL 模块 我需要示例的主要原因是我之前有 Qt 数据库接口的经验 并且 Sqlite 在字段类型方面有一些奇怪的行为 类型是按字段存储的 而不是按列存储的 The
  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • C++ STL 映射,std::pair 作为键

    这就是我通过地图定义的方式 std map
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • 如何在单例类和未命名类之间进行选择?

    我会使用这样的单例 Singleton single Singleton instance single gt do it 我会使用这样的未命名类 single do it 我觉得单例模式除了具有可读的错误消息之外 与未命名的类相比没有任何
  • MVC BaseController 处理 CRUD 操作

    我想重构我的基本 CRUD 操作 因为它们非常重复 但我不确定最好的方法 我的所有控制器都继承 BaseController 如下所示 public class BaseController
  • 为什么 xcode IDE 认为 `friend` 是保留字

    我一直在开发一个个人项目 并在我创建的新类中包含以下代码 property readonly getter isFriend BOOL friend 它似乎没有任何问题 当我构建它时 它可以编译得很好 但是当我们在xcode IDE看起来像
  • 仅使用一个 #include 表达式一次包含多个头文件?

    是否有任何表达式可以使语法一次包含多个标头 而无需为每个新文件编写 include 表达式 例如 include
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 我想找到 C# 代码中所有后面没有括号的 if 语句。通过正则表达式

    我想找到所有if声明和for后面没有大括号的语句 当你在一个文件中写入一行时if声明您大多不会将其括在大括号中 所以我想找到所有这些if and for声明 请帮忙 就像我想捕捉这个声明 if childNode Name B return
  • C 编程中的 rand() 问题? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么我总是用 rand 得到相同的随机数序列 https stackoverflow com questions 1108780 why do i always get the same seque
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • 如何通过分解 y 轴来减小 mschart 的高度

    如何降低 mschart 的高度 如下所示 编辑 就我而言 我不想查看中断图表 this chart1 ChartAreas 0 AxisY ScaleBreakStyle Enabled false 您似乎正在寻找AxisY ScaleB
  • Qt - 添加超链接到对话框

    有没有办法在 Qt 对话框中添加可点击的超链接 IE 它应该看起来像一个超链接 蓝色文本 当您单击它时 它应该在浏览器中打开该超链接 像这样的东西 Use QLabel setOpenExternalLinks bool 并在标签上设置文本
  • 结构大小与 typedef 版本不同?

    我的代码中有以下结构声明和 typedef struct blockHeaderStruct bool allocated unsigned int length typedef struct blockHeaderStruct block
  • 在 OSX 上检测 Objective C 或 C++ 中的文件夹访问(如 fs_usage 命令)

    我正在 OSX 上开发实时病毒扫描程序 OSX 的命令行命令fs usage可以通过以下方式确定文件夹访问权限 并且只能以 root 用户身份运行 fs usage w f pathname grep Users Documents Use
  • 用 std::generate_n 填充 std::map

    我想填写一个std map using std generate n但无法让它发挥作用 我尝试过的是这样的事情 unsigned number of pairs 5 std map
  • 将“C# 友好类型”名称转换为实际类型:“int” => typeof(int)

    我想得到一个System Type给定一个string指定 原始 类型C 友好名称 基本上与 C 编译器读取 C 源代码时的方式相同 我觉得描述我所追求的最好方式是单元测试的形式 我希望存在一种通用技术 可以使以下所有断言通过 而不是尝试对

随机推荐

  • 您可以在迭代 std::list 时从其中删除元素吗?

    我的代码如下所示 for std list
  • 是否有 Visual Studio 宏可以在类中每个方法的开头设置断点?

    是否有 Visual Studio 宏 版本 2008 或 2010 可以在类中每个方法的开头设置断点 我已经看到了参考文献的提示 但我无法挖掘出真正的参考文献 名为的 Visual Studio 扩展OzCode确实具有在类的所有成员上设
  • 检测外部进程是否是交互式的并且有任何可见的 UI

    我似乎无法找到一种方法来确定是否Process有一个用户界面 例如一个用户可见的窗口 Environment UserInteractive对于外部进程没有用处 process MainWindowHandle IntPtr Zero在我的
  • 在 swift 中表达具有动态范围的 for 循环

    或者我如何在 for 循环条件中使用索引 嘿人们 由于我们在 swift 3 中没有 c 风格的 for 循环 我似乎找不到一种方法来表达更复杂的 for 循环 所以也许你可以帮助我 如果我写这个 for int i 5 num i gt
  • 面板之间切换

    我有 1 个表单中的 3 个面板来完成输入某些数据的过程 单击面板中的下一个按钮时 应显示下一个面板 最初 我启用了第一个面板的可见性并禁用了其他面板的可见性 当单击下一个按钮时 将执行以下代码 panel1 Visible false p
  • PHP:以五个为一组显示数据库中的条目?

    是否可能 如果可以 我该怎么做 选择数据库表中的所有条目 然后在一组中同时显示五个结果 含义 举个例子 我的数据库中有 15 条记录 那么我想像这样呈现我的数据 div class 1 5 Record 1 Record 2 Record
  • 如何使用 Tensorflow 1.0 Java API 创建/初始化变量

    我正在尝试移植这行Python代码 my var tf Variable 3 name input a 到爪哇 我能够做到这一点tf constant这样 graph opBuilder Const name setAttr dtype t
  • matplotlib轮廓图中的对称对数色阶

    如何创建具有符号对数 对称对数 比例的等高线图 即显示负值和正值的对数刻度 一种可能性是解决这个例子 http matplotlib org examples pylab examples contourf log html 这给出了对数刻
  • 如何停止 SAS 中的“锁不可用于 <数据集>”错误?

    运行 SAS 程序时 我总是收到 锁不可用 错误 如果我在一个程序中多次对同一数据集执行操作 通常会发生这种情况 研究此错误后 我了解到这意味着两个程序正在尝试访问同一数据集 换句话说 这类似于尝试打开其他人或您自己已在使用的文档 这是给我
  • Wait() 和 Notify() 概念 - Java 多线程

    class Q volatile boolean valueSet false volatile int n synchronized int get if valueSet try wait catch InterruptedExcept
  • Spring Data MongoDB - 与其他集合的聚合

    我正在尝试Spring Boot v 2 1 3 RELEASE 和 Spring Data MongoDB 由于关键要求 我必须像下面这样进行建模 假设员工了解多种技术 但主要语言是任何人 因此 我决定将技术集合分开 并在员工集合中以某种
  • 使用“delete this”在多大程度上符合C++标准?

    在对象中实现引用计数时 释放并可能删除对象 原语通常是这样实现的 void CObject Release referenceCount if referenceCount 0 delete this 首先 delete this看起来很吓
  • 如何为 Android 生成新的第二个 Google Maps API 密钥?

    我需要为我的 Android 应用程序生成一个新的 API 密钥 但是当我按照上面的步骤操作时http code google com android add ons google apis mapkey html它总是给我相同的密钥 我认
  • Python - 在守护进程内调用 multiprocessing.pool

    我有一个Python生成守护进程的脚本 在这个过程中 我正在使用multiprocessing pool to run 1 to 4同时进行处理 当我在守护进程之外运行它时 它工作得很好 即 当我设置run from debugger Tr
  • 即时运行不适用于 android studio 3.3 更新

    到目前为止 我已经在 Android 7 的 Nexus 5 上使用即时运行 没有任何问题 昨天我将Android Studio更新到稳定版本3 3 从那时起 Instant Run 就不起作用了 我总是收到以下警告 选择卸载以前版本的选项
  • 如何获取某个 URL 的总点赞数(点赞数和分享数)?

    我在页面上放置的 Likes 插件会显示直接单击按钮的次数 以及页面 URL 被共享或点赞被评论的次数 不过 当我使用 Graph API 查看我的对象时 它只显示直接 点赞 点击的数量 这是一个示例对象 id 17678692xxxxxx
  • python/scipy 中的多元样条插值?

    是否有库模块或其他简单的方法来在 python 中实现多元样条插值 具体来说 我在规则间隔的三维网格上有一组标量数据 我需要在分散在整个域中的少量点处对其进行插值 对于二维 我一直在使用scipy interpolate RectBivar
  • 将字符串发送到serial.to_bytes不起作用

    我正在尝试发送包含命令的字符串变量 像这样 value 0x31 0x0a 0x32 0x0a 0x33 0x0a self s write serial to bytes value 上面那个失败了 不会给出任何错误 但是当我发送这样的值
  • ASP.NET Core 6:允许Azure AD身份验证和本地身份验证

    我正在开发一个程序 该程序允许用户以两种方式进行身份验证 他们可以通过任何电子邮件创建和使用本地 自制 帐户 或者他们可以仅对我们的组织使用 Azure AD OAuth 无论使用哪种身份验证方法 用户都应受到相同的对待并返回 trueco
  • 令人困惑的 gprof 输出

    I ran gprof在一个 C 程序上16 637s 根据time 我得到了第一行输出 cumulative self self total time seconds seconds calls s call s call name 31