App下載

哪種編程語言最省電?編程質(zhì)量與耗電多少有關(guān)嗎?

不許揪我的小耳朵 2024-06-29 15:23:54 瀏覽數(shù) (541)
反饋

能量使用數(shù)據(jù)是否能告訴我們編程語言的質(zhì)量?


11


六位來自葡萄牙三所大學(xué)的研究人員針對這一問題進行了研究,并發(fā)表了一篇名為《編程語言的能效》的論文。

他們使用27種不同的編程語言實現(xiàn)了10個問題的解決方案(均采用相同算法),隨后執(zhí)行這些解決方案,并記錄了每種語言的電量消耗以及運行速度和內(nèi)存占用情況,結(jié)果如圖示??


12


這項研究揭示了一些有趣的發(fā)現(xiàn):并非所有運行速度快的編程語言都具有低能耗。

雖然C語言通常被認(rèn)為是速度最快的,并且在節(jié)能方面也表現(xiàn)優(yōu)異,但在對DNA數(shù)據(jù)庫進行特定基因序列掃描的基準(zhǔn)測試中,Rust語言顯示出了更低的能耗,而C語言則排在第三位。

此外,"最佳"編程語言的評定標(biāo)準(zhǔn)也因測試的不同而異。例如,在一次測試中,C語言在內(nèi)存使用方面排名第二,而Rust排名第一;但如果按照內(nèi)存使用排序,Rust的排名會下降9位。

為了確保研究的可比性和代表性,研究者采用了Computer Language Benchmarks Game提供的10個標(biāo)準(zhǔn)算法問題進行測試。進行各種基準(zhǔn)測試是至關(guān)重要的,因為不同的測試會得出不同的結(jié)果。

總體來看,盡管C語言在速度和節(jié)能方面通常被認(rèn)為是最優(yōu)的,但在涉及掃描 DNA 數(shù)據(jù)庫中特定基因序列的基準(zhǔn)測試中,Rust 是最節(jié)能的,而 C 語言位居第三。


運行速度快的語言更節(jié)能嗎?


雖然普遍認(rèn)為程序運行速度的提升可以降低能耗,但研究者們明確指出,"并非所有運行速度快的語言都更節(jié)能"。

研究者們通過分析實驗結(jié)果,得出了一個結(jié)論:CPU消耗了大部分能量,大約平均占 88%。

此外,他們還發(fā)現(xiàn) DRAM 的峰值使用量與能耗之間幾乎沒有直接聯(lián)系。這項研究為一個長期存在的問題提供了解答:"速度更快是否意味著更環(huán)保?"

是的,當(dāng)按照執(zhí)行時間排序時,前5名最節(jié)能的語言在能源效率上也幾乎一致。

實際上,在10個基準(zhǔn)測試中,有9 項測試的最優(yōu)結(jié)果是由速度最快且能源效率最高的三種語言之一獲得的,這并不出乎研究者們的預(yù)料。

眾所周知,C、C++ 和 Rust 這三種語言因其高度優(yōu)化而在執(zhí)行性能上表現(xiàn)出色。

然而,當(dāng)對其他24種語言按照運行時間進行排名時,情況則有所不同。只有OCaml、Haskell、Racket和Python這四種語言在能耗和時間排名上保持一致,而其他語言的排名則出現(xiàn)了較大差異。

即便在單一基準(zhǔn)測試中,也存在一些速度快但并不節(jié)能的語言。


編譯型語言的優(yōu)點


編譯型語言似乎是最節(jié)能和運行最快的語言,這一點在論文中通過具體的數(shù)據(jù)得到了量化。

根據(jù)研究,編譯語言需要花費120J能量來運行解決方案,而虛擬機和解釋型語言要分別花費576J和2365J。

在執(zhí)行時間的對比上,研究者也采用了相同的精度,得出的結(jié)論是:平均而言,編譯語言花費5103毫秒,虛擬機語言花費20623毫秒,解釋型語言花費87614毫秒。

兩項排名中的前4名均為編譯型語言(有一個例外,Java語言)。


13


5種最慢的語言都是解釋型語言:Lua、Python、Perl、Ruby和Typescript。

5種能耗最多的語言也都是解釋型語言:Perl、Python、Ruby、JRuby和Lua。

但同時,在使用正則表達式操作字符串時,5種最節(jié)能的語言中有三種(TypeScript、JavaScript和PHP)是解釋型語言。盡管在其他情況下,它們往往不是很節(jié)能。

編譯型語言在占用內(nèi)存最少的排名中也占據(jù)了前5名。


14


研究者指出,平均內(nèi)存使用量方面,編譯語言為125Mb,虛擬機語言為285Mb,解釋語言為426Mb。

4種解釋型語言內(nèi)存消耗最高。

按編程范式排序,命令式語言平均使用116Mb,面向?qū)ο笳Z言249Mb,函數(shù)式語言251Mb,腳本421Mb。

命令式編程在能源消耗和運行速度上通常優(yōu)于其他范式。


15


研究者強調(diào),編程范式和語言對能耗、時間和內(nèi)存的影響各異,且重要性取決于具體需求。

例如,后臺任務(wù)可能不需要極速運行。某些應(yīng)用需同時考慮能耗和時間,C語言在這兩方面表現(xiàn)優(yōu)異。

若要同時節(jié)省內(nèi)存和時間,C、Pascal和Go是合適選擇。若考慮時間、能耗和內(nèi)存三個因素,C和Pascal在節(jié)能且內(nèi)存使用少方面表現(xiàn)最佳。


16

原文鏈接:

https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf?utm_source=thenewstack&utm_medium=website&utm_campaign=platform


0 人點贊