據(jù)悉,這項研究采用了多種方法論和多個基準測試。每種語言使用十個編程問題來進行調(diào)查,,幫助研究人員獲得更具有可比性、代表性和廣泛性的程序,以及編譯/執(zhí)行選項和編譯器版本,。
C /C++能耗最低且最快
盡管人們普遍認為程序運行速度更快時能源消耗會隨之降低,,但論文中明確指出“更快的語言并不總是最節(jié)能的”,強調(diào)這并不像 E(nergy) = T(ime) x P(ower) 的物理定律那么簡單,。
比如在他們的一項基準測試中,,Chapel 程序的執(zhí)行時間比用 Pascal 編寫的等效程序少 55%——但 Pascal 程序使用的能量少 10%。
在人們傳統(tǒng)印象中,,編譯語言“往往”是最節(jié)能,、運行速度最快的。
不出意料,,這項研究得出的結(jié)論為:編譯語言是最快和最節(jié)能的語言,。C 和 C++ 語言是能耗最低且最快的語言。Go 是編譯語言中表現(xiàn)最差的語言,,甚至比依賴虛擬機的 Java 或 Erlang 等還要糟糕,,至少在二叉樹的測試中是這樣。
Perl,、Lua 和 Python能耗高
下面看一下解釋型語言在速度與能耗方面的表現(xiàn),,由測試可知解釋型語言才是能耗最高的語言,比如 Perl,、Lua 和 Python,。
而5 種最慢的語言也是解釋型語言,如:Lua,、Python,、Perl、Ruby 和 Type,。但在使用正則表達式操作字符串時,,5 種最節(jié)能的語言中有三種解釋型語言,分別是 TypeScript,、JavaScript 和 PHP,。
請注意,所有測試都是在如下環(huán)境運行:Intel Core i5-4460 Haswell CPU @ 3.20GHz,,16GBRAM,,Ubuntu Server 16.10 操作系統(tǒng)和Linux 4.8.0-22??紤]到如今 MicroPyhon 可以在各種微控制器上運行,,猜它在體積更小的設備上的表現(xiàn)可能不會那么糟糕。
此外,,這項研究還根據(jù)時間,、內(nèi)存和能耗參數(shù)的不同目標組合,對每種語言進行了排名,而在這些指標中 C 語言始終名列前茅,。這與人們長久以來的認知相同,如果你想優(yōu)化程序,,提高續(xù)航時間,,降低功耗,則 C 語言絕對是最佳選擇,、匯編語言,、SIMD 指令或加速器的自定義指令優(yōu)化某些例程。