Java 与 C 简单性能测试

标签 java c performance printing comparison

我运行一个简单的循环,在 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.cgcc 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/

相关文章:

java - 动态转换为每个数组类型

Java "Unreachable Code"错误

java - 命令不起作用

c - 如何连接 2 个 C 字符串,而不覆盖任何终止空字符?

c - 使用管道发送消息 - C

java - Android Socket - 内存泄漏 - 传入消息

c++ - 迭代超过 10GB+ 的二进制文件

sql-server - 查询内存表比基于磁盘的查询慢

java - 将数组从 actionPerformed() 发送到另一个类

c - 使用 fputs() 将整数写入文件