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 硬件比較上,略勝一籌,但是,無論如何我們都知道他在搞啥飛機。