1

我有一个性能问题,我怀疑一个标准 C 库函数花费的时间太长,导致我的整个系统(进程套件)基本上“打嗝”。果然,如果我注释掉库函数调用,打嗝就消失了。这促使我调查有哪些标准方法可以证明这种事情?测试一个函数以查看它是否会导致整个系统挂起一秒钟(导致其他进程暂时处于饥饿状态)的最佳实践是什么?

我至少想明确地关联被调用的函数和可见的冻结。

谢谢

4

2 回答 2

0

我试图弄清楚你所说的“打嗝”是什么意思。我想象你的程序做这样的事情:

while (...){
  // 1. do some computing and/or file I/O
  // 2. print something to the console or move something on the screen
}

并且通常打印或图形输出以主观连续的方式嗡嗡作响,但有时它似乎冻结,而计算部分需要更长的时间。

这是你的意思吗?

如果是这样,我怀疑在运行状态下它最总是在步骤 2 中,但在打嗝状态下它会在步骤 1 中花费时间。

我会注释掉第 2 步,所以它几乎所有时间都处于打嗝状态,然后在调试器下暂停它以查看它在做什么。该技术可以毫不费力地告诉您确切的问题所在。

于 2010-05-25T02:31:28.630 回答
0

确定这些东西的最佳方法是使用分析工具来获取有关每个函数调用花费多长时间的信息。

未能设置一个保留一块内存的功能。然后在您的代码中的各个点,将一个字符串写入内存,包括当前时间。(这避免了与写入显示器相关的延迟)。运行代码后,取出内存并对其进行解析,以确定部分代码占用了多长时间。

于 2010-05-24T23:45:48.130 回答