转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
跨平台的客场交锋:.NET vs. JAVA on Linux         ★★★★

跨平台的客场交锋:.NET vs. JAVA on Linux

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1183 更新时间:2009/4/22 20:46:42
o自己有编译器和执行环境,那么我们就要分别对编译器和执行环境进行测试和对比,下面是测试过程和结果:

(所有测试结果全部是运行十次,取最短的一次时间)

在windows下的测试:

使用mono的C# 编译器编译以上代码命令行:

monomcs /out:mtest.exe test.cs

提示编译成功,产生一个mtest.exe文件。

直接输入mtest,采用microsoft的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:2613

输入mono mtest.exe,采用mono的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:4336

使用microsoft的C#编译器编译以上代码命令行:

csc /out:wtest test.cs

提示编译成功,但产生了一个警告:“temp变量已经被赋值,但是从未使用过”,这个警告是正常的,我们可以不用管它,它也不会给这次测试带来任何影响。同时生成了一个wtest.exe文件。

直接输入wtest,采用microsoft的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:2563

输入mono wtest.test,采用mono的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:2654

使用java编译器编译java源文件:

javac test.java

结果没有任何错误和警告提示,并生成一个test.class文件

输入:java test,采用java运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:6039

 

在linux下的测试:

将以上三个可执行文件:mtest.exe , wtest.exe, test.class及源码文件test.cs,test.java拷贝到linux系统下。

具体操作和windows下没多大区别,这里只报告一下结果:

mono mtest.exe结果为4205

mono wtest.exe 结果为2527

java test结果为 4197

然后用linux下的编译器分别重新编译了Mono和Java的源码,运行:

mono test.exe 结果为 4205

java test 结果为5876

这里值得一提的是,mono的for windows版和for linux版编译出来的代码没有任何差别,运行结果也几乎没什么差距。Java的for windows版和for linux版编译出来的两个class文件有差异,并且运行结果也有很大的差距。

另外,由于mono在两个平台下编译出来的可执行文件完全一样,所以没有将linux下编译的程序放到windows上进行测试,仅仅将java在linux下编译的可执行程序放到windows上进行测试,结果是5087。

以下是这次测试结果的对照表(毫秒):

编译器

平台

.Net Framework

MONO.Net

JAVA for Win

JAVA for Linux

.Net Framework

2563

2613

-

-

Windows

2654(Mono)

4336(Mono)

6039(java)

5087 (java)

Linux

2527(Mono)

4205(Mono)

4197(java)

5876(java)

       通过比较这个测试结果,我们发现了两个很有趣的现象,一个是mono的jit在运行原生.net编译器编译出来的可执行文件时,效果很好,和原生.net的jit运行效率很接近。但是运行它自己的编译器编译出来的可执行文件时,效率却变得很差,这种情况在windows和linux下都一样。但是原生.net的jit运行mono编译出来的可执行文件却又还可以。难道是mono不喜欢自己的亲生儿子?:)

       还有一个是java的“跨平台”能力最强,在windows下编译的程序,放到linux下执行起来速度比较快,在linux下编译的程序放到windows下执行比较快,难道这就是java为跨平台能力进行的优化? :)

       另外,值得一提的就是在windows下用java编译的本程序直接放到linux下使用会产生两个警告。重新编译以后警告消失。

       在这次的测试中,mono不负众望,以远远出乎我们意料的好成绩和.net站在了同一条线上(甚至可以看到本次测试中的最好成绩竟然属于mono,但是我认为几十毫秒的差距完全可以忽略不计,不能认为mono的效率超过了.net)。同时,无论是在windows平台,还是在linux平台,mono的表现都超过了java。要知道,她还仅仅只是一个在开发中的产品。

       .net拥有最先进的技术,拥有最速的效率,现在,她不仅能跨语言,还能跨平台,甚至还开放了源代码,Mono的开发计划中就有Linux, Power PC, Solaris, Strong ARM等版本。还有微软支持的FreeBSD版本。

当然,java也不会是省油的灯,不知道SUN的下步棋会如何走,才能得以抵挡住.net大军的疯狂进攻。

 

上一页  [1] [2] 


[网页制作]JavaScript的三种消息框:警告框、确认框、提示框  [网页制作]JavaScript运算符介绍
[网页制作]JavaScript比较和逻辑运算符介绍  [网页制作]script中的language=javascript和type=text/javas…
[网络安全]winlogon.exe 病毒症状及查杀方法  [Sql Server]不用SqlTransaction执行数据库事务处理
[Web开发]web.config更改网站上传文件大小的限制  [Web开发]增加或修改Session的会话时间
[Web开发]Web.config文件详细介绍  [Web开发]分析器错误信息:无法识别的配置节“connectionStr…
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台