主题:【倡议】Java SE 5.0和.NET 2.0擂台赛 -- Highway
性能是一个语言的关键,所以我想做的第一件事就是比较一下Java SE 5.0和.NET 2.0 性能。
不过这并不是一个简单的问题。Benchmark program并不好写。因为这两种语言覆盖面极大,一个Benchmark program很难面面俱到。另外就是即使专注一点,也有很多细节要考虑。比如说I/O吧,你就可能要考虑读的性能,写的性能,大数据量连续读写的性能,小数据量高频率读写的性能,顺序Access问题,Random access问题,Text问题,Binary问题,诸如此类。
今天我从网上下载了一个别人以前写的Benchmark program。这个Benchmark program不是非常具有代表性,比如最重要的XML,Socket,Thread,database, serialization/deserialization等等都没有涉及,I/O和String的比较也太过简单了,有几处比较也不是所谓的Apple vs Apple(比如用Java的Vector比较C#的Arraylist).不过不管怎么说,这总是一个开头吧。
大家可以在这里得到程序源代码
有一点要说明一下,I/O部分有些问题,Java和.net得到的文件不一样大。我修改了两行,大致如:
String textLine = "abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefgh\r\n"; ... while (i++ < ioMax) { streamWriter.Write(textLine); } streamWriter.Close();
另外Java在测试中会出现Out of memory Exception.我只好给Java来了几个参数,以保证程序可以完成。具体是:java -Xmx500M Benchmark
这里是我的测试结果,在大多数情况下,.NET有优势,在个别测试上Java领先。由于Java和.NET的Exception设计不一样,所以这一项目差别特别大。另外Java的三角运算比.NET慢10倍左右,肯定也有些问题。我还没有仔细看。
[提示:原图站已失效]
另外,Generics的问题我将今后专门讨论!
- 相关回复 上下关系8
我觉得你可以试着调整一下.Net的ArrayList的构造参数 老兵帅客 字246 2004-10-01 16:55:56
😉应该和这个没有关系.往ArrayList充填东西的时候时间是另算的! Highway 字208 2004-10-01 20:38:40
响应老轧同志的伟大号召,积极投身于擂台赛这场伟大的革命运动之中去 老兵帅客 字276 2004-10-01 15:47:19
😉Java SE 5.0和.NET 2.0 性能初试 (草案)
😅测试修正(使用Java Server VM)重新测试 Highway 字533 2004-10-01 08:12:41
一个二者性能比较的例子 老兵帅客 字2624 2004-09-30 18:05:00
Thanks. Very useful information! Highway 字0 2004-09-30 19:08:29
😜到底什么是.net 呀 ppw 字48 2004-09-30 17:18:34