江西广告网

标题: 实例演示:Java和C语言哪个更快? [打印本页]

作者: 雨过后    时间: 2009-1-5 08:59
标题: 实例演示: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快,您觉得呢?




欢迎光临 江西广告网 (http://bbs.jxadw.com/) Powered by Discuz! X3.2