我在Java中做了一个简单的循环来测试速度.与C中的相同循环相比,需要更多时间.2十亿次迭代大约需要6.5秒其执行时
如果它被认为是缓慢的 - 可以做些什么来改善性能?
有人会责怪JVM的启动吗?或者 - JIT编译器没有完成它的工作?
处理器速度:3.4 GHz
public class Jrand {
public static void main (String[] args) {
float f;
long startTime = System.currentTimeMillis();
for (int i = 0; i < 2000000000; i++) {
f = i * 0.0001F;
}
long endTime = System.currentTimeMillis();
float totalTime = (endTime - startTime);
System.out.println("time: " + totalTime/1000);
}
}
Run Code Online (Sandbox Code Playgroud)启动时间
Java启动时间通常比许多语言慢得多,包括C,C++,Perl或Python,因为在使用之前必须加载许多类(以及平台类库中的所有类).
所以这可能是一个原因
但我认为Java在各个方面往往比母语慢.看看这些统计数据:

图表:

你能加快速度吗?不 - 而且可能你可以责怪JVM;)
这个
for (int j = 0; j < 10; j++) {
float f;
long start = System.nanoTime();
for (int i = 0; i < 2000000000; i++) {
f = i * 0.0001F;
}
long end = System.nanoTime();
long timeToCallNanoTime = System.nanoTime() - end;
long time = Math.max(0, end - start - timeToCallNanoTime);
System.out.println("time: " + time + " ns.");
}
Run Code Online (Sandbox Code Playgroud)
版画
time: 2580790 ns.
time: 4241443 ns.
time: 17 ns.
time: 0 ns.
time: 0 ns.
time: 0 ns.
time: 0 ns.
time: 0 ns.
time: 5 ns.
time: 0 ns.
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,JIT完全优化了环路.它不可能比这更快.
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |