mono项目(http://www.go-mono.org/)是移植Microsoft .NET Framework到Linux平台的一个Open Source项目,北京时间今天上午(6月27号)发布0.25版,除了源代码,还有For RedHat Linux x86 9.x/8.x/7.x、Mandrake 9.1/x86、Debian和Windows (XP, 2000, NT)的二进制安装包可以直接下载。完成程度已经比较高,虽然还没有实现完整的类库,但是仅仅8M多的体积,就已经包含了全部执行环境和在二十多兆的Microsoft .NET Framework,甚至一百多兆的Microsoft .NET Framework SDK都没有包含的C#编译器。即使相对Java SDK 三十多兆的体积也是很小的。是学习C#和.NET非常好的入门工具。不过它是不包含开发文档的,必须安装.NET Framework SDK才可以获得类库参考等文档。
大家如果同时有Windows和Linux环境并且都安装mono, 试用过程中就会惊喜的发现,用Windows或者Linux平台上的mono C#编译器编译出的exe文件可以不需重新编译就由两个操作系统的mono执行环境直接执行。这意味着什么呢?不正是著名的”Compile Once, Run Everywhere”吗?虽然mono现在只支持Windows和Linux的x86版本, 但相信移植到其他平台困难不大。这样的话exe文件跟Java的class文件还有什么区别吗?Java要如何面对?
这里我列出了早前使用mono 0.24版进行的Java, mono, MS .NET Framework的简单横向性能比较。
测试任务是比较简单的,考虑到比较耗时的一般是浮点运算,而平时Java应用中发现大部分的时间消耗在类的创建过程,因此设计了以下简单的任务:大循环创建浮点和整数数组,内循环将数组内的值进行重复的运算。两个任务分别用Java, C#实现,在以下环境执行:
Linux : Red Hat Linux 7.3 2.96-110, kernel 2.4.18-3, Intel(R) Pentium(R) 4 CPU 1.60GHz, 256M RAM
win2k : Windows 2000 Professional SP3, Intel Celeron 800MHz, 384M RAM
java : win2k: Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92)Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode); Linux: Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01) Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)
mono : mono JIT compiler version 0.24 http://www.go-mono.org/download.html
Microsoft Framework : Microsoft .NET Framework 1.1
(注:结果图片)
结果图片/Develop/ArticleImages/19/19612/CSDN_Dev_Image_2003-7-122052231.gif
数字显示的是完成任务消耗的毫秒数。
从测试结果我们可以大致的看出mono的JIT编译器和虚拟机跟Java的相比效率还比较差,虽然在快的CPU上差距大幅缩小,特别是浮点运算。考虑到JDK1.4.0的Hotspot JVM已经经过了近十年投资巨额金钱的优化,而mono仅仅是业余爱好者在不到一年时间内开发出来的,提高的空间应该还很大。再加上同样的“一次编译,到处运行”特性。Java,要走好了。Java对MS .NET Framework方面则是后者占优。
刚进行了mono 0.25的简单测试,相对0.24版有小幅度提高。可见mono还是在进步中。让我们希望这个新的跨平台开发环境再接再厉,给我们一个新的选择。
发布人:bruise
来源:博客中国-卢威