雨过后 发表于 2009-1-5 08:59:36

实例演示:Java和C语言哪个更快?

我之前在某人的博客中看到一篇文章,他比较了很多语言的运行速度,包括Ruby、Io、 PHP、Python、Lua、Java、Perl、Applescript、TCL、ELisp、Javascript、OCaml、Ghostscript和C等。数据如下:





语言

时间

相对速度


ocaml compiled 3.09.2

0.05 seconds

1.00 x


SBCL 1.0.2

0.13 seconds

2.43 x


C gcc-4.0.1

0.14 seconds

2.67 x


Java 1.4.2

0.39 seconds

7.49 x


Lua 5.1

1.25 seconds

23.81 x


Io 20070410 Vector

1.37 seconds

26.13 x


ocaml bytecode 3.09.2

3.75 seconds

71.48 x


Python 2.5.1

9.99 seconds

190.33 x


Ghostscript 8.51

11.79 seconds

224.51 x


Perl 5.8.6 Optimized

12.37 seconds

235.57 x


TCL 8.4 Optimized

16.00 seconds

304.76 x


Perl 5.8.6

21.75 seconds

414.29 x


PHP 5.1.4

23.10 seconds

440.05 x


Javascript SpiderMonkey v1.6

31.14 seconds

593.10 x


Ruby 1.8.4

33.05 seconds

629.54 x


Emacs Lisp

47.00 seconds

895.24 x


Applescript

71.75 seconds

1366.67 x


Io 20070410

85.44 seconds

1627.47 x   
    可以看到Java几乎比C慢两倍!
    但是接着我发现他用的是Java的老版本而且只实验了一次,这实际上并不能够真实地体现Java的速度。
    于是我迅速写了点代码运行100三次,并用我认为 “快”的方式运行(其实还有更快的,只是我比较懒没有设定)。结果如下:




$ java -server -XX:CompileThreshold=1 Mandelbrot 2>/dev/null
Java Elapsed 2.994
Java Elapsed 1.926
Java Elapsed 1.955   




$ gcc -O8 mandelbrot.c
$ ./a.out 2>/dev/null
C Elapsed 2.03
C Elapsed 2.04
C Elapsed 2.05   
    C 仍然赢得了第一轮,但接下来的两次明显Java快。
    当然,结果会因为代码和机器的不同而不一样,但有一点可以确定:Java运行相当快。
    这次测试用的版本是Java 1.6.0—b105 和gcc 4.1.2,用的电脑是苹果,内核是酷睿双核2.33GHz ,Linux操作系统。
    处于好玩,我还在Rhino编辑器上运行了JS的测试:




$ java -cp rhino1_6R5/js.jar -server -XX:CompileThreshold=1 org.mozilla.javascript.tools.shell.Main -O 9 mandelbrot.js 2>/dev/null
JavaScript Elapsed 21.95
JavaScript Elapsed 17.039
JavaScript Elapsed 17.466
JavaScript Elapsed 17.147
    在这个测试中,JS比C慢九倍。如果CPU的速度没18个月翻一番,那么2007年JS的运行速度就赶上2002 C 的速度了。
    后来在C语言 的测试中加了些cpp,-march=pentium4发挥了点作用,但结果还是比Java慢:




$ gcc -O9 -march=pentium4 mandelbrot2.c
$ ./a.out 2>/dev/null
C Elapsed 1.99
C Elapsed 1.99
C Elapsed 1.99
    代码业已经提供给您,是C语言快还是Java快,您觉得呢?
页: [1]
查看完整版本: 实例演示:Java和C语言哪个更快?