这个问题是 Fortran 的后续问题:对代码部分进行计时的最佳方式?.
如果我想在我的代码中计时函数,我知道我可以使用 gprof 或 kcachegrind。我也知道这些工具的结果可能会出现偏差(请参阅http://www.yosefk.com/blog/how-profilers-lie-the-cases-of-gprof-and-kcachegrind.html和https:// stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343)。
我知道我可以为我想要数据的每个函数添加手动计时器,如果我想要所有东西的数据,这对于库来说可能是乏味或不切实际的。
不幸的是,我遇到了一些社区,他们希望这些时间数据用作证明他们的方法性能的证据(以证明性能的改进,指出性能不佳的地方,科学论文等等)。这似乎在管理类型和一些学术类型中很受欢迎。有没有比插入计时器更好的方法来获得可靠准确的计时数据?我是否应该结合使用不完善的工具并以某种方式筛选性能数据?
(注意:这个问题与性能调整无关,即使它是相关的。您可以通过使用随机暂停来进行性能调整而无需计时。这也与计时是否值得,因为这些社区需要计时数据,而且我没有能力轻易改变他们的想法。关于这些主题的任何评论都是很好的讨论,但它们对回答我的问题没有帮助,因为现实是我回答的人想要以某种方式反映的计时数据表现。)