实例演示: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]