对于大学,我执行字节码修改并分析它们对Java程序性能的影响。因此,我需要Java程序 - 在生产中使用的最佳情况 - 和适当的基准测试。例如,我已经获得了HyperSQL并通过基准程序PolePosition来衡量其性能。在没有JIT编译器的情况下在JVM上运行的Java程序。谢谢你的帮助!
P.S。:我不能使用程序来测试JVM或Java语言本身(例如Wide Finder)的性能。
答案 0 :(得分:9)
Brent Boyer为IBM开发人员的作品撰写了一篇精彩的文章系列:Robust Java benchmarking,其中附有一个基于合理统计方法的微基准框架。 Article和Resources Page。
既然你是为大学做的那样,你可能会对Andy Georges, Dries Buytaert, Lieven Eeckhout: Statistically rigorous java performance evaluation in OOPSLA 2007感兴趣。
答案 1 :(得分:9)
Caliper是Google提供的用于微观基准测试的工具。它将为您提供图表和一切。把这个工具放在一起的人非常熟悉“过早优化是所有邪恶的根源”的原则(对于jwnting的观点)并且在解释基准测试的作用时非常谨慎。
答案 2 :(得分:1)
任何有经验的程序员都会告诉你,过早优化比没有优化更糟糕。 它充其量只是浪费资源,并且是最糟糕的未来(和当前)无限问题的来源。
没有上下文,任何应用程序,即使使用基准测试日志,都不会告诉你任何事情。 我可能有一个循环,需要10个小时才能完成,基准测试将显示它几乎永远,但我不在乎,因为它不是性能关键。 另一个循环只需要一毫秒,但可能太长,因为它导致我无法捕获以100微秒间隔到达的传入数据包。
两个极端,但两者都可能发生(即使在相同的应用程序中),除非您知道该应用程序,如何使用,它的作用,在哪些条件和要求下,否则您永远不会知道。
如果用户界面需要1/2秒才能呈现它可能太长或没有问题,那么上下文是什么?用户的期望是什么?