Java任务运行时

2 java algorithm runtime jvm-hotspot

首先,我必须承认这些是非常基本和原始的问题......我想在Java中演示不同的算法,用于排序和搜索,以及获取运行时的值.有些问题我无法解决:

  1. 有热点编译 - 这是我需要停用的运行时优化(我猜).

  2. 如何获取运行时的时间值(秒)?在执行之前启动计时器并在之后停止...似乎有点原始.而timer-object本身也会消耗运行时...我需要避免这种情况.

Java API中有什么可以用来解决这些问题吗?

谢谢,克劳斯

Tom*_*ine 5

您可以-Xint在命令行上禁用HotSpot ,以使性能降低一个数量级.但是,为什么不想衡量真实世界的表现呢?编译时,不同的东西可能成为瓶颈.

通常用于微基准测试:

  • 用于System.nanoTime在开始和结束时获得时间测量
  • 跑了一段合理的时间
  • 做了多次测量(有一些"热身")
  • 不交错不同算法的测量
  • 不要在测量的段中进行任何I/O.
  • 使用结果(HotSpot可以完全优化琐碎的操作)
  • 在现实世界的情况下(或尽可能的cloae)
  • 记住双核心是常态,更多核心将变得正常