Hôm nay tôi đã thực hiện một thử nghiệm đơn giản để so sánh tốc độ giữa java và c - một vòng lặp đơn giản làm cho số nguyên "i" tăng từ 0 lên hai tỷ.Java nhanh hơn C
Tôi thực sự mong đợi ngôn ngữ c sẽ nhanh hơn java. Tôi đã rất ngạc nhiên về kết quả:
thời gian cần thiết trong vài giây cho java: xấp xỉ. 1.8 giây
thời gian cần tính bằng giây cho c: xấp xỉ. 3.6 giây.
Tôi KHÔNG nghĩ rằng java là ngôn ngữ nhanh hơn chút nào, nhưng tôi KHÔNG hiểu tại sao vòng lặp nhanh gấp đôi c trong các chương trình đơn giản của tôi?
Tôi đã thực hiện một sai lầm quan trọng trong chương trình chưa? Hoặc là trình biên dịch của MinGW cấu hình kém hoặc một cái gì đó?
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);
}
}
THE C-CHƯƠNG TRÌNH
#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;
}
Các vòng lặp có lẽ bị bỏ qua trong Java. Hãy thử làm điều gì đó có ý nghĩa trong vòng lặp, như cập nhật tổng và in nó sau vòng lặp. Xem thêm [chủ đề này] (http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java) –
Trình tối ưu hóa. Như Sanjay nói. – Devolus
Bạn đã bật tối ưu hóa cho bản dựng C chưa?Tôi đoán bạn có lẽ đã không vì nếu không, mã C của bạn nên được trả lại 0 giây. – Mysticial