Bjö*_*röm 7 c java performance
今天我做了一个简单的测试来比较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);
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
R..*_*R.. 22
使用除-O0
(例如-O2
)以外的任何优化级别重建C版本,您会发现它在0秒内运行.所以Java版本需要1.6秒才能做什么,而C版本需要0.0秒(实际上,大约0.00005秒)才能做任何事情.
Pet*_*rey 10
Java在消除无法执行任何操作的代码方面更为积极.不太可能认为开发人员知道他们在做什么.你没有计算循环,但是java检测和消除循环需要多长时间.
简而言之,Java通常在无用时更快.
您也可能会发现,如果您优化C代码并删除调试信息,它将执行相同的操作,很可能更短.