锁定老帖子 主题:java比.net(C#)慢这么多么?
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-31
今天听到同事说.net的执行效率比java快很多,我当时就说没有,其实他们都是差不多的,都是基于虚拟机技术,只是在windwos平台上微软会对自
己的技术做一定的优化。后来自己也做了一个测试,结果太出乎我的意料了,仅仅是一个for循环的测试,结果确实是.net(3.5)的效率比
java(5.0)要高出很多,测试程序如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { long j = 1; System.Console.WriteLine(System.DateTime.Now.ToString()); for (long i = 1; i < 10000000000; i++) { j = j + 1; } System.Console.WriteLine(System.DateTime.Now.ToString()); } } } 使用vs2008编写,.net 3.5,使用release方式生成exe文件。在命令行下执行,执行时间是21秒。 import java.text.SimpleDateFormat; import java.util.Date; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println(formatter.format(date)); long j = 1L; for(long i = 1;i < 10000000000L;i++){ j = j + 1; } Date date2 = new Date(); System.out.println(formatter.format(date2)); } } eclipse编写并且编译,基于java 5.0,同样在命令行下运行执行时间是1分11秒。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-31
这种傻循环算不得数的,很可能被编译器优化过了。
试试排序吧。 |
|
返回顶楼 | |
发表时间:2008-07-31
没有可比性,不能这么看,要看系统整体运行的情况
|
|
返回顶楼 | |
发表时间:2008-07-31
>> 使用release方式生成exe文件。
这里会不会有问题? 如果java用jit呢? |
|
返回顶楼 | |
发表时间:2008-08-02
用 java se 6.0以上看看。。
ms 的优化技术还是很好的 |
|
返回顶楼 | |
发表时间:2008-08-06
我前段时间用八皇后递归算法,比较了一下c、java和c#:
环境 耗时(毫秒) 编译选项 win2003 R2 vc6 21010 cl /O2 win2003 R2 vc2008 19007 cl /O2 /arch:SSE2 /fp:fast win2003 R2 gcc(msys) 16523 (MinGW/msys) win2003 R2 sun JDK 6 29152 win2003 R2 c# 2.0/3.5 25126 ubuntu 8.04 sun JDK 6 31320 ubuntu 8.04 GCC 4.2.3 12230 gcc -O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -march=pentium4 -pipe -fomit-frame-pointer ubuntu 8.04 ibm JDK 6 20304 结论: 1、sun jdk6在linux下比Windows2003下慢 7.44% 2、VC2008编译的C代码比VC6快 10.54% 3、Win2003下GCC(msys)编译的C代码比VC2008的快 15.03% 4、Linux下GCC编译的代码比VC2008的快 55.41% 5、linux IBM JDK6 比 SUN JDK6快 43.58% 6、linux IBM JDK6 比 VC6编译的代码快 3.48% 7、linux IBM JDK6 比 C#的代码快 23.75% 7、Windows下C#比sun Java6快 16.02% |
|
返回顶楼 | |
发表时间:2008-08-07
建议楼上再试验一下浮点运算,比如sin,cos之类的,C#还是会比java高一大截。
|
|
返回顶楼 | |
发表时间:2008-08-07
一个简单的整数循环说明不了问题,而且除了MS自己的东西,大部分语言在Linux上的性能要比在Windows好。
推荐一个网站: http://shootout.alioth.debian.org/gp4/index.php 做各种语言实现多个常见运算(binary-trees, recursive...)的性能对比:Java/Ruby/Python/C/C++ ... 可以看一下Java和C++的对比,大部分在1.0~2.0之间 http://shootout.alioth.debian.org/gp4/benchmark.php?test=all⟨=java&lang2=gpp |
|
返回顶楼 | |
发表时间:2008-09-24
mathgl 写道 用 java se 6.0以上看看。。
ms 的优化技术还是很好的 ------------------- ms的优化根本不值一提。 想当年borland的 c++ complier把ms的c打得满地找牙 现在也卖掉啦。 |
|
返回顶楼 | |
发表时间:2008-09-25
Durian 写道 mathgl 写道 用 java se 6.0以上看看。。
ms 的优化技术还是很好的 ------------------- ms的优化根本不值一提。 想当年borland的 c++ complier把ms的c打得满地找牙 现在也卖掉啦。 那是complier大牛 Anders同学加盟microsoft前的事吧,都10多年了。 1 |
|
返回顶楼 | |