我正致力于使用C ++编写的SAAS产品的性能调优。我们在代码中的几个点设置微秒精度计时器来记录各种操作需要多长时间,现在我正在尝试使用AQTime进一步挖掘并找到一些长时间运行的请求中的特定瓶颈。但是,AQTime在给定函数中报告的总时间及其子项小于我们的内部计时器报告的时间。有没有人经历过这个或者知道为什么会这样?可能与在VM中运行有关吗?在我迄今为止所描述的一些函数中,差异非常一致(AQTime报告的时间大约是我们从CPU计时器记录的时间的60%),但如果我发现它有这个,我会感到更放心。发生在其他代码库中,这不仅仅是我们的特殊性!
非常感谢!
答案 0 :(得分:1)
这种行为很大程度上取决于使用的计数器。如果您使用的是用户或用户+内核时间计数器,则AQtime仅计算CPU执行代码所花费的时间。与使用手动计时器不同,执行其他进程或线程代码所花费的时间不计算在内。
Elapsed Time计数器应该显示与您获得的结果类似的结果,但即使在这种情况下,也可能会因计时器处理代码添加的开销而导致一些差异。
您可以在AQtime帮助系统的Counters Overview主题中找到有关不同计数器详细信息的更多信息。