Java 任务运行时

标签 java algorithm runtime jvm-hotspot

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

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

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

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

谢谢, 克劳斯

最佳答案

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

通常用于微基准测试:

  • 使用 System.nanoTime 在开始和结束时获取时间测量值
  • 跑一段合理的时间
  • 多次测量(有一些“热身”)
  • 不要交错测量不同算法
  • 不要在测量段中做任何 I/O
  • 使用结果(HotSpot 可以完全优化掉琐碎的操作)
  • 在现实世界的情况下(或尽可能在阴凉处)做这件事
  • 记住双核是常态,更多核将成为常态

关于Java 任务运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/819931/

相关文章:

algorithm - 确定 NxN 整数矩阵的行列式是偶数还是奇数

java - 如何序列化函数返回的 rx.Single 对象?

java - Wicket 中关闭网页时调用的方法?

java - 如何在java中的二叉树上实现深度优先搜索(DFS)?

algorithm - 展平多级链表

java - 运行时生成 spring xml 文件

java - 动态加载接口(interface)实现时如何使接口(interface)成为仅编译依赖项

java - 如何制作一个将打开计算器应用程序 "X"次的 Java 程序

java - Set <Figura2D>类型的方法add(Figura2D)不适用于参数(Rettangolo)

java - 如何在 Java 中打印出数组的偶数索引?