我运行一个简单的循环,在 java 和 c 中打印迭代器 (i) 1.000.000 次。
我分别使用 netbeans 和 Visual Studio。
我不关心精度,但在 40 秒左右:
netbeans (java) 已经打印了大约 500.000 个数字 而 windows (c) 打印了大约 75.000 个数字
--为什么差别这么大?
我使用的是普通的 intel core2duo(2.0 Ghz) 电脑和 windows7
最佳答案
这似乎是错误的。您能提供一下您的代码吗?
我的版本:
使用 gcc -std=c99 -o itr itr.c
和 gcc 4.5.1
编译的 C 版本
#include <stdio.h>
int main( int argc, char **argv )
{
for ( int i = 0; i < 1000000; i++ )
{
printf("%d\n", i);
}
}
Java 版本编译为 javac Itr.java
,其中 javac 1.6.0_20
和 JVM 为:
OpenJDK Runtime Environment (IcedTea6 1.9.1) (ArchLinux-6.b20_1.9.1-1-x86_64)
OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode)
代码-
class Itr
{
public static void main( String[] av )
{
for ( int i = 0; i < 1000000; i++ )
{
System.out.println(i);
}
}
}
和时间:
time ./itr
// Snip Output //
real 0m1.964s
user 0m0.330s
sys 0m1.477s
time java Itr
// Snip Output //
real 0m5.245s
user 0m2.337s
sys 0m3.023s
测试系统是运行 64 位 ArchLinux 的 Intel Core i5 M520 (@ 2.4GHz)。
关于Java 与 C 简单性能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4092116/