這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Google發布了一個研究報告,仔細比較了C + +、Java、Scala和Google自己擁有的Go程式設計語言的效能。
根據Google的測試報告(PDF格式),C + +是四種語言中運行速度最快的。但是該檔案同時也指出,最佳化代碼相對困難,這需要相當的努力、熟練的水準,不是平均水平的程式員所能達到。
Go旨在消除至少這個限制一些,但它仍然是年輕的(它首次亮相大約一年,不過前半年只是一種“實驗性”語言年),並在大多數Google測試中表現出,它落後於C + +以及Java和Scala。“Go提供了有趣的語言特性:這是一個簡潔和標準化的符號,”閱讀了報告,GOOGLE創始人羅伯特亨特寫下:“[但是]語言編譯器仍然是不成熟的:無論是效能和二進位大小方面都反應了該問題。”
這就是說,Go的編譯比其他三種語言都要快。 Java和Scala編譯成Java位元組碼,而C + +和Go編譯成機器代碼。Google目前沒有測試並發:一個為Scala和Go特別關注的領域。Go被設計為一個並發語言,提供了C + +的速度,但“感覺”像Python的動態語言。
Scala——一個物件導向編程和過程語言的之間語言,運行在Java虛擬機器上——邊緣上運行Java,而且它有一個更小的代碼和記憶體空間。但它仍然受到的一些限制Java的。從報告中看到:“Scala[的]簡潔的符號語言和強大的代碼最佳化特性,為重複雜性上最好的選擇”“Java版本很可能是最容易實現,但最難的效能分析。具體來說垃圾收集的影響周圍是複雜,非常難調。由於Scala在JVM上的運行有相同的問題。
與登記冊上,上周五在矽谷招待會上公布的報告,Scala的建立者馬丁Odersky批准了他的郵票,Google的基準,在兩個不同的層面運作。
首先,Google編碼為每種語言,使用語言的慣用容器類基準,迴圈結構,以及記憶體/對象分配計劃——不使用語言,旨在最大限度地表現特定的工具。“這種方法允許的語言功能,代碼的複雜性,編譯器和編譯時間,二進位大小,已耗用時間和記憶體足跡幾乎公平比較”的檔案說。
再經過測試的結果在Google公布,各種Google的工程師最佳化了每個語文基準,並再次運行測試。“雖然這項工作是一個比較軼事只,基準,以及隨後的調整努力,都在各自語言的典型表現痛點指示,”亨特說。
Odersky同意,至少在涉及到Scala。最佳化後的——這涉及到Scala的功能方面的優勢——Scala的代碼及其運行時的大小顯著減少。“我特別喜歡這個主意來構建一個角度非專業點的一個演算法,通過比較資料,然後...然後挑戰人們的最佳化,”Odersky說。“從某種意義上說,這是公平的。”
在最佳化階段還顯示,而C + +提供了最快的已耗用時間,最佳化代碼是比較困難的。在最佳化階段,開發商還顯著地降低了C大小+二進位檔案。
據來自Google員工伊恩前往蘭斯泰勒在郵件清單發送,很少把工作轉到最佳化之前,該檔案的發布,而現在,經過進一步的最佳化,代碼要快得多。“儘管名稱,[表面上轉到最佳化版]代碼從來沒有打算成為一個地道的或有效率前往。羅伯特[亨特]例子讓我看看他的代碼,再看一眼,我就砍死了一個小時到做一點點更好。如果我已意識到,他將對外發布,我會使其更好的投入更多的時間,“泰勒說。
但是Scala說Odersky,演出的,譬如他的預期。“我知道,我們是頭到與Java頭。這是一個令人驚喜的,我們都優於Java的最佳化和非最佳化的測試,但我不希望成為應用程式的規則。”