我在大学里进行字节码修改,并分析它们对Java程序性能的影响。因此,我需要Java程序——最好是在生产中使用的——和适当的基准测试。例如,我已经获得了HyperSQL并通过基准程序PolePosition来测量其性能。这些Java程序在没有JIT编译器的JVM上运行。感谢您的帮助!
附言:我不能使用程序来基准测试JVM或Java语言本身的性能(例如Wide Finder)。
我在大学里进行字节码修改,并分析它们对Java程序性能的影响。因此,我需要Java程序——最好是在生产中使用的——和适当的基准测试。例如,我已经获得了HyperSQL并通过基准程序PolePosition来测量其性能。这些Java程序在没有JIT编译器的JVM上运行。感谢您的帮助!
附言:我不能使用程序来基准测试JVM或Java语言本身的性能(例如Wide Finder)。
Brent Boyer为IBM developer works写了一系列精彩的文章:健壮的Java基准测试,其中附带了一个基于可靠统计方法的微基准测试框架。文章和资源页面。
既然你是为大学服务的,你可能会对Andy Georges、Dries Buytaert、Lieven Eeckhout在OOPSLA 2007中进行的统计严格的Java性能评估感兴趣。
Caliper是Google提供的用于进行微基准测试的工具。它将为您提供图表等信息。这个团队非常熟悉“过早优化是万恶之源”的原则(正如jwnting所说),并且在解释基准测试的作用时非常谨慎。
任何有经验的程序员都会告诉你,过早优化比没有优化更糟糕。 它最多只是浪费资源,而在最坏情况下,它将成为无限未来(和当前)问题的源头。
没有上下文环境,即使有基准日志,任何应用程序也无法说明问题。 我可能有一个循环需要10小时才能完成,基准测试将显示它需要几乎永远的时间,但我不关心,因为它并非性能关键。 另一个循环仅需要一毫秒,但这可能太长了,因为它导致我无法捕捉到以100微秒间隔到达的入站数据包。
两个极端,但两者都可能发生(甚至在同一个应用程序中),除非您知道该应用程序,它如何使用,它做什么,以及在哪些条件和要求下,否则您将永远不会知道。
如果用户界面需要半秒钟才能呈现,那可能太长或没问题,这是什么情况?用户期望是什么?