今天我做了一個簡單的測試來比較java和c之間的速度 - 一個簡單的循環使得整數「i」從0增加到20億。Java比C更快
我真的希望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中很可能被忽略。嘗試在循環中做一些有意義的事情,比如更新總和並在循環之後打印它。另請參閱[本主題](http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java) –
優化程序。正如桑傑說的。 – Devolus
你打開了C構建的優化嗎?我猜你可能沒有,否則,你的C代碼應該返回0秒。 – Mysticial