0

我正在对用 C++ 编码的 SAAS 产品进行性能调整。我们在代码中的几个点设置了微秒精度的计时器来记录各种操作需要多长时间,现在我正在尝试使用 AQTime 进一步挖掘并找到我们一些长时间运行的请求中的特定瓶颈。但是,AQTime 在给定函数及其子函数中报告的总时间少于我们内部计时器报告的时间。有没有人经历过这种情况或知道为什么会发生这种情况?可能与在虚拟机中运行有关吗?到目前为止,在我分析的少数函数中,差异是相当一致的(AQTime 报告的时间大约是我们从 CPU 计时器记录的时间的 60%),但如果我发现这有发生在其他代码库中,这不仅仅是我们的特性!

非常感谢!

4

1 回答 1

1

这种行为很大程度上取决于所使用的计数器。如果您使用用户或用户+内核时间计数器,AQtime 只计算 CPU 执行代码所花费的时间。与使用手动计时器时不同,不计算执行其他进程或线程代码所花费的时间。

Elapsed Time 计数器应该显示与您获得的结果相似的结果,但即使在这种情况下,由于您的计时器处理代码增加的开销也可能会导致一些差异。

您可以在 AQtime 帮助系统的“计数器概述”主题中找到有关不同计数器详细信息的更多信息。

于 2014-01-14T05:26:19.537 回答