论坛首页 入门技术论坛

JAVA真的比C快

浏览 5138 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-04   最后修改:2009-06-04
魔力猫咪 写道
Sun的HotSpot虚拟机是由一家被Sun收购的Java编译器开发公司最早开发出来的。Sun收购后改名叫HotSpot,在发布前就声称可以超过C++和C。当然,在推出后是当时最快的虚拟机之一,但是并没有超过C。后来经过多次改进,速度开始接近并超过C。
主要原理是编译器可以根据运行情况,把Java代码进行动态编译优化。比如某一段代码调用特别频繁,就可以专门对这部分进行优化,产生更适合其运行的本地代码。根据现实运行情况编译的代码当然比C的静态编译代码更适合当时的情况,所以这部分代码跑得比C快不新鲜。无论任何时候,跑得最快的都是最适合当前情况的机器码。



就拿楼主的例子来看,纯粹是乘法运算,不存在优化的可能,测试结果应该很公平,
然后看看测试结果,C语言比JAVA快3倍以上
这种纯暴力计算,java怎么可能比C快 == ==||
0 请登录后投票
   发表时间:2009-06-04  
HotSpot确实在某些方面做了优化(比如采用了一些牛B的算法),
但这些是典型的“空间换时间”,看看JVM内存消耗就知道了
上面的测试中GC基本上没工作,如果换一个内存低一些机子,
Java的速度局限性很容易体现出来
0 请登录后投票
   发表时间:2009-06-05  
guooscar 写道
jdk1.6
mingw32-gcc.exe (GCC) 3.4.5 (mingw-vista special r3)

javac Test.java
gcc -o test -O3 test.c

time ./test
real    0m8.797s
user    0m0.015s
sys     0m0.015s

time java -cp . Test
real    0m30.594s
user    0m0.031s
sys     0m0.000s





这个是什么测试啊???有源码么???
real
user
sys
都是什么意思啊?

请guooscar兄仔细解释解释呗。


无论任何时候,跑得最快的都是最适合当前情况的机器码。

恩。。。魔力猫咪  这句话让我有点头绪了。。。呵呵
0 请登录后投票
   发表时间:2009-06-07  
不要拿for循环测试,这个基本没有意义的,编译器都是对这些经过优化的。再者只凭一个例子就断定是不科学的。总体上讲Java是没有C快的,搞过ACM的应该深有体会。
0 请登录后投票
   发表时间:2009-10-11  
单独的一个浮点运算测试能说明什么呢???
你在测试FPU???这和编程语言什么关系????
0 请登录后投票
   发表时间:2009-10-12  
。。。烧饼
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics