【发布时间】:2018-12-11 05:33:11
【问题描述】:
我们有一个java程序。我想通过在这些函数的入口和返回上调用适当的分析器函数来跟踪一些函数的入口和返回。
跟踪函数入口很简单,因此不会成为本次讨论的一部分。然而,return 有点混乱,因为我们必须在每个返回点添加分析器代码,因此寻找建议我们如何在不弄乱代码的情况下做到最好。
在 C++ 中,这很容易,只需在函数入口处创建一个小型跟踪类的本地实例,该跟踪类的构造函数和析构函数将负责调用分析器函数。但是,java 没有析构函数(finalize 不起作用),因此这种方法是毫无疑问的。
有什么建议/提示吗?
【问题讨论】:
-
使用分析器...但要注意它会干扰结果。不要相信它在小方法上的计时结果。当您只需要分析几个方法时,您可以使用 try-finally。否则,请考虑 AOP(面向方面编程)工具。无论如何,我建议查看stackoverflow.com/questions/504103/… - 它只是远程相关,但表明事情比使用 AOT(提前)编译器更复杂。
标签: java performance profiling