PetShop的性能——宠物店大战 (J2EE 与 .NET)

发布于:软件开发网 来源:未知 作者:佚名 时间:2009-01-24 09:25

Pet vs Pet: MS opens .NET benchmarking wars
原作者 Andrew Orlowski in San Francisco

Microsoft 认为 .NET 目前已经成熟到可以放到效能测试的第一线战场上了。成熟并非是效能战争上的一个字眼。

这场战争的主角是 Sun 所设计的范例程序宠物商店 (Pet Store),这个范例

程序被用来在大部分的场合中展示 Java 2 Enterprise Edition 应用程序的可携带性,以及跨平台性。

http://java.sun.com/j2ee/blueprints

而 Microsoft 也建立了自己的宠物商店范例

http://www.msdn.microsoft.com/net/compare/petshop.asp

,并且号称这个 .NET 版本(也许叫做 .PET?) 的野兽商店所使用的程序代码的行数比起 Java宠物商店来得少,同时它的效率也是Java 版的 28 倍。另外,他也暗示了同样是网络上背景式的搜寻以及图片等等的显示能力等,他耗掉较少的 CPU 。

Microsoft 使用 Oracle 的 App server benchmark

http://otn.oracle.com/tech/java/oc4j/content.html

,以及一个未知的Application Server 来当作 J2EE 的前端介面。Oracle 则使用8i的版本,Micorsoft 使用SQL Server但是却说在这个范例中,它的数据存放在 Oracle上。

在 Oracle/J2EE 的范例中,他"很公平"的使用了 Sun的旧硬件,包括了 4-way E3500 (App Server 用),以及一个 10-way Ultra (Solaris 2.6) 来执行数据库。 Microsoft 使用了一个2-way ProLiant 来执行 app server (?) 以及一个 4-way 550
Mhz ProLiant 来执行 .NET 版本的野兽商店数据库。

Sun 描述这个野兽商店是一个"高度唬人的战术运用"

Sun告诉我们的是,J2EE 宠物店是一个范例程序用来展示几个可靠的design patterns (MVC...),同时他并非为了效能而设计。

这个J2EE版本的应用程序并没有为了效能而做过调整。Micorsoft号称由Oracle所测式的版本是个最佳化过并且校调过Java宠物店。

然而,Oracle 的白皮书中很清楚的描述着 "宠物店并非设计来在实际的商业环境中执行的,因此在它的效能与能够负载的工作量上,还需要实际上的修改才可以真的被使用"。

我们可以在 http://www.javalobby.com/message/show/frm/javalobby?children
=true&folderId=20&discussionContextId=11040&messageId=86577

找到由 Ray Cromwell 的详细的反驳资料,他指出,在这个宠物范例中,有太多的抽象类别在内,几乎没有人会根据Sun blueprints 写出这样的程序,因为这个范例几乎是 OO 设计中的最高阶了。

另外一个直接的线索是 .PET的效能来至于它的设计者,Scott Stanfield,在MSDN 里面有着:.PET 的 demo 实际上是产品里面非常细微的一部份而已。

J2EE并不是 Microsoft GotDotNet在这一个战争中的唯一部份(GotDotNet 是一个设计得像 SourceForge FreshMeat 的社群开发群 MSDN 只是他们的前端接口的多种选择之一) Microsoft 同时也把魔掌伸向 IBM 的 WebSphere app server,IBM已经在 http://www.ibm.com/software/webservers/studio/msnetreview.html 反驳。

为什么大家的声音都这么愤怒呢?嗯,Microsoft 很清楚的企图使用效能来当作行销手段上的一个重点。Microsoft的sales (Windows VP Brian Valentine)已经正式的向 to tattoo anti-Linux intelligence on their backsides 求助,要求更多关于 .PET 的实际效能数据等等。

但是效能测试的战术运用很容易引起反对意见,Microsoft在好几年前曾经在Visual Basic 的测试上很大胆的尝试过,也引起了极大的反弹。Microsoft 发表了测试数据,同时表明了VB的效能胜过Delphi。在他们的范例中,Microsoft 的应用程序使用了 local call ,而他们在 Delphi 的测试中,却很奸诈的去一个远程的数据库搜寻,当然,让 VB 在这样的测试环境中胜过 Delphi好几千倍并不让人吃惊。

当两者的架构都很类似的时候,也许有人可以试图说服我们.NET在本质上快过J2EE。.NET 也许会快一些,也许不会,每一个竞争者都可以在不同的平台上去校调,或者在这个 Java 的例子中,我们也可以重新设计 compile 过来提供原来所应有的效能,但是我们绝对不会靠着架构的不同,来自夸效能的优异。

.PET 的范例中让 Wintel 硬件在跟旧型的 Sun 硬件比较上,略胜一筹,但是,无论如何我们都知道他在搞啥飞机。

你可能感兴趣的:(.net)