很多人的電腦屏幕上都會有一個顯示CPU占用率的小球(當然也可能是其他形狀,很多人是在下載諸如360等安全軟件中帶的),很多人在看到數字彪紅的時候會很受不了,想要馬上清理內存。如今,節能不僅僅是硬件問題,編程語言的選擇也可能會對能源消耗產生嚴重影響,本文我們將深入了解編程語言的能源效率。
多年來,我們將性能與處理時間結合在一起。“它有多好?”的意思是“它有多快?”,開發人員、工程師甚至消費者都會做很多工作,以避免CPU的重大耗盡,保護其電池,能源效率從硬件開始逐漸轉化為軟件開發。
當嘗試衡量編程語言的效率時,會出現很多問題,比如,你使用什么來度量? 編寫的程序更快,語言就更節能、更有效率嗎? 更快的編程語言是更環保的嗎?比較編程語言之間的效率是困難的。語言的性能可以通過其編譯器或虛擬機的質量輕松改善,改進源代碼與優化庫一樣重要。
但是,一組葡萄牙研究人員做到了。他們研究了27種最流行的編程語言,以查看速度和效率之間是否存在關系。研究團隊通過使用計算機基準測試,使用最先進的編譯器、虛擬機、解釋器和庫來編譯/執行程序測試這些編程語言。然后,他們分析了不同編程語言實現之間的性能,整個過程考慮了三個變量:執行時間,內存消耗和能耗。
研究發現:速度并不等效于能源效率。比如C、C ++、Rust和Ada這樣的編譯語言被列為一些最節能的語言。Java是面向對象語言中速度最快,效率最高的語言之一。解釋性編程語言,如Perl,Python和Ruby是最不節能的。研究人員發現,基于CPU的能源消耗總是占能源消耗的大部分。
平均來說,如果按照編程范例進行排序,命令式語言需要最少的內存,其次是面向對象、函數式,最后是腳本語言。
那么,是否可以綜合能源消耗、時間和內存使用選擇一種編程語言呢? 當然可以,C語言是所有領域的明顯贏家。但如果你對C語言編程不感興趣,那么有一些有趣的選擇。
Go和Pascal在效率測試中做的相當差,但如果你只是考慮基于能源消耗和內存,他們會做得很好。對于有興趣改善能源和內存的人,Rust和FORTRAN也是不錯的選擇。
測試代碼真正的效率
研究人員在GitHub上貢獻了一個項目(開源地址:https://github.com/greensoftwarelab/Energy-Languages),可以用來評估你的代碼,看它是否高效,只需要三個簡單的步驟:
創建一個名稱為“基準”的文件夾,例如test-benchmark,在你實現的編程語言里面。
按照操作部分中的說明,填寫Makefile。
使用compile_all.pyscript來編譯,運行或測試你想要的內容!或者使用make命令運行它。
你怎么看這一項研究,會改變你對編程語言的選擇嗎?