use*_*065 -2 c java printing comparison performance
即运行一个简单的循环,在java和c中打印出迭代器(i)1.000.000次.
我分别使用netbeans和visual studio.
我不关心精度,但大约40秒:
netbeans(java)打印了大约500.000个数字,而windows(c)打印了大约75.000个数字
- 为什么这么大的差异?
我使用通用的intel core2duo(2.0 Ghz)pc与windows7
这似乎是错的.你能提供你的代码吗?
我的版本:
C版编译gcc -std=c99 -o itr itr.c与gcc 4.5.1
#include <stdio.h>
int main( int argc, char **argv )
{
for ( int i = 0; i < 1000000; i++ )
{
printf("%d\n", i);
}
}
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
代码 -
class Itr
{
public static void main( String[] av )
{
for ( int i = 0; i < 1000000; i++ )
{
System.out.println(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
和时代:
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
Run Code Online (Sandbox Code Playgroud)
测试系统是运行64位ArchLinux的Intel Core i5 M520(@ 2.4GHz).