【发布时间】:2013-09-20 23:04:37
【问题描述】:
今天我做了一个简单的测试来比较java和c之间的速度——一个简单的循环,使整数“i”从0增加到20亿。
我真的希望 c 语言比 java 更快。我对结果感到惊讶:
java 所花费的时间(以秒为单位):大约。 1.8 秒
c 所花费的时间(以秒为单位):大约。 3.6 秒。
我根本不认为 java 是一种更快的语言,但我也不明白为什么在我的简单程序中循环速度是 c 的两倍?
我是否在计划中犯了重大错误?还是MinGW的编译器配置不好?
public class Jrand {
public static void main (String[] args) {
long startTime = System.currentTimeMillis();
int i;
for (i = 0; i < 2000000000; i++) {
// Do nothing!
}
long endTime = System.currentTimeMillis();
float totalTime = (endTime - startTime);
System.out.println("time: " + totalTime/1000);
}
}
C 程序
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main () {
clock_t startTime;
startTime = clock();
int i;
for (i = 0; i <= 2000000000; i++) {
// Do nothing
}
clock_t endTime;
endTime = clock();
float totalTime = endTime - startTime;
printf("%f", totalTime/1000);
return 0;
}
【问题讨论】:
-
循环在 Java 中很可能被忽略。尝试在循环中做一些有意义的事情,比如更新一个总和并在循环后打印它。另见this thread
-
优化器。正如桑杰所说。
-
您是否为 C 构建开启了优化?我猜你可能没有,否则你的 C 代码应该返回 0 秒。
-
语言 A 永远不会比语言 B 快。不过,语言 A 中的程序 X 可能比语言 B 中的程序 Y 快。
-
“我根本不认为 java 是一种更快的语言” 坚持教条,不管证据如何。优秀(!)
标签: java c performance