我不想更改此代码,我只对 JVM、操作系统或内核定制/配置感兴趣以获得最佳结果!
我有一秒循环(1000 x 1ms)
public static void main(String[] args) throws InterruptedException {
long start = System.nanoTime();
for (int i = 0; i < 1000; i++ ) {
Thread.sleep(TimeUnit.MILLISECONDS.toMillis(1));
}
long duration = System.nanoTime() - start;
System.out.println("Loop duration " +
duration / TimeUnit.MILLISECONDS.toNanos(1) + " ms.");
}
在我的带有内核 3.12 的 Fedora 20 上,这个循环需要 1055 毫秒。
这是相当不错的结果,平均水平超过1100ms.
是否可以使用自定义 JVM 标志或操作系统配置来使此代码更快?
Loop duration 1055 ms.
Calling sleep()
您基本上是在告诉操作系统将您的线程挂起至少 X 毫秒。无法保证它将在该时间之后继续执行,或者操作系统稍后会重新调度您的线程。此外,最低金额sleep
时间及其准确性在很大程度上取决于操作系统。
编辑:您还应该考虑到,在您的情况下,(最有可能)您的代码正在被解释! JAva 仅编译为本机代码hotspots
(此处来自Hotspot JIT 的名称),它们被频繁执行。为了server
VM,这是给定代码的 10k 次执行。你只有1k。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)