我做了一个简单的测试,我知道C++更快,但我的测试结果不太现实。
C++代码如下:
#include <stdio.h>
#include <windows.h>
unsigned long long s(unsigned long long n)
{
unsigned long long s = 0;
for (unsigned long long i = 0; i < n; i++)
s += i;
return s;
}
int main()
{
LARGE_INTEGER freq, start, end;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
printf("%llu\n", s(1000000000));
QueryPerformanceCounter(&end);
double d = (double) (end.QuadPart - start.QuadPart) / freq.QuadPart * 1000.0;
printf("Delta: %f\n", d);
return 0;
}
Java代码如下:
public class JavaApplication5 {
public static long s(long n) {
long s = 0;
for (long i = 0; i < n; i++) {
s += i;
}
return s;
}
public static void main(String[] args) {
long start = System.nanoTime();
System.out.println(s(1000000000));
long end = System.nanoTime();
System.out.println((end - start)/1000000);
}
}
C++编译器:gcc 4.4.0和Java:jdk 1.6.0
Java:2795毫秒
C++:0.013517毫秒
它说C ++比Java快206777倍!不可能!我的测试有什么问题?
System.out.println()
可能会导致加载许多之前不需要的类,我猜这一个因素就占据了相当大一部分差距。请注意删除这个因素对结果的影响。 - Joachim Sauer