我一直在分析一些可能在系统调用中花费大量执行时间的代码。手动和使用 callgrind 对某些函数计时,callgrind 报告的系统调用时间比简单地对函数计时(当然也包括 CPU 时间)长约 20、30 或 40 倍。
--collect-systime=ON 用于收集每个函数的此 sysCall 时间。
据我所知,callgrind 通过计算 CPU 指令和计时系统调用来工作,只是让操作系统完成工作并且不会干扰。我不明白为什么在使用 callgrind 进行分析时花费在 sysCalls 上的时间会增加,有人可以详细说明吗?
callgrind 仍然是分析在 sysCalls 中花费的时间的有用工具吗?