Java程序基准测试

13

我在大学里进行字节码修改,并分析它们对Java程序性能的影响。因此,我需要Java程序——最好是在生产中使用的——和适当的基准测试。例如,我已经获得了HyperSQL并通过基准程序PolePosition来测量其性能。这些Java程序在没有JIT编译器的JVM上运行。感谢您的帮助!

附言:我不能使用程序来基准测试JVM或Java语言本身的性能(例如Wide Finder)。


你想做什么并不是很清楚。你能再详细解释一下吗? - Riduidel
2
字节码通常不会被优化,而是JIT将优化它所创建的本地代码。因此,您可能会发现更改字节码不会像您预期的那样提高性能,因为您取决于它如何转换为本地代码。 - Peter Lawrey
@Peter,我认为他正在寻找能够提供最佳性能的场景。 - UVM
@UNNI,很可能JIT会优化某些预期的模式。将代码更改为看起来更优化的代码可能会使JIT混淆并最终得到次优代码。我不认为有任何微不足道的字节码更改可以获得显着的性能提升。然而,更复杂的更改可能会做到,并且值得调查。 - Peter Lawrey
@Peter,我见过一个名为JBenchmark的Java基准测试工具,但是目前还没有用过,请问它是如何工作的?正如你所说的,优化JIT以实现显著的性能提升确实有点困难。顺便问一下,你提到过是否有任何JIT模式可以解决这个问题? - UVM
3个回答

9

9

Caliper是Google提供的用于进行微基准测试的工具。它将为您提供图表等信息。这个团队非常熟悉“过早优化是万恶之源”的原则(正如jwnting所说),并且在解释基准测试的作用时非常谨慎。


1

任何有经验的程序员都会告诉你,过早优化比没有优化更糟糕。 它最多只是浪费资源,而在最坏情况下,它将成为无限未来(和当前)问题的源头。

没有上下文环境,即使有基准日志,任何应用程序也无法说明问题。 我可能有一个循环需要10小时才能完成,基准测试将显示它需要几乎永远的时间,但我不关心,因为它并非性能关键。 另一个循环仅需要一毫秒,但这可能太长了,因为它导致我无法捕捉到以100微秒间隔到达的入站数据包。

两个极端,但两者都可能发生(甚至在同一个应用程序中),除非您知道该应用程序,它如何使用,它做什么,以及在哪些条件和要求下,否则您将永远不会知道。

如果用户界面需要半秒钟才能呈现,那可能太长或没问题,这是什么情况?用户期望是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接