緊湊代碼和節能軟件

發(fā)布時(shí)間:2022-3-31 10:25    發(fā)布者:eechina
關(guān)鍵詞: 代碼 , 節能
來(lái)源:Digi-Key
作者:Lee Teschler

過(guò)去,在微處理器芯片剛剛問(wèn)世的黑暗時(shí)代,工科大學(xué)生往往是在 DEC PDP-11 小型計算機等機器上首次嘗試正經(jīng)的計算機編程。除了盡力編寫(xiě)能夠在 PDP-11 上正確運行的程序外,當時(shí)的學(xué)生還必須保證他們編寫(xiě)的代碼緊湊。在早期計算機課程中,有一種情況會(huì )激怒老師,那就是提交一個(gè)本來(lái)用 15 行代碼就可以完成的 20 行匯編碼程序。他們出現這樣的反應當然不是沒(méi)有理由,因為當時(shí)的內存非常昂貴。PDP-11 的讀/寫(xiě)存儲器通常只能存儲 4,096 個(gè) 16 位字,該存儲器由 22 密耳磁芯組成,這些磁芯通過(guò)導線(xiàn)進(jìn)行訪(fǎng)問(wèn)。


Digital Equipment Corporation (DEC) 的 PDP-11 計算機。(圖片來(lái)源:flickr)

時(shí)至今日,您會(huì )發(fā)現編程課程仍然強調代碼緊湊的重要性。但有跡象表明,編程課程可能很快就不再只是要求編寫(xiě)緊湊代碼,而是還會(huì )要求編寫(xiě)能耗最低的軟件。

計算機代碼能效曾經(jīng)是一個(gè)小眾話(huà)題。以前主要是小型嵌入式系統的程序員對其感興趣,因為在這類(lèi)系統中,必須關(guān)注 MCU 的功耗,目的是最大限度地延長(cháng)供電紐扣電池的壽命,F如今,軟件能效正在占據主流。越來(lái)越多的智能手機用戶(hù)避免使用計算密集型應用程序,只為了多節省一點(diǎn)電量。甚至基于云的系統也會(huì )注重軟件能效,因為它會(huì )影響數據中心的碳排放。

乍看之下,您可能會(huì )覺(jué)得緊湊代碼已經(jīng)很節能。事實(shí)證明,這條經(jīng)驗法則有時(shí)正確,但并非總是如此。此外,計算機程序的能效通常取決于編寫(xiě)程序所用的語(yǔ)言。編譯語(yǔ)言比解釋語(yǔ)言或編寫(xiě)虛擬機的語(yǔ)言更節能。但即使看似相互關(guān)聯(lián)的編譯語(yǔ)言,能效也可能存在很大差異。

葡萄牙的研究人員深入分析了能源、時(shí)間和內存使用與節能編程之間的關(guān)系 (https://dl.acm.org/doi/10.1145/3136014.3136031)。他們分析了 27 種軟件語(yǔ)言的能效性能。為此,他們使用了最先進(jìn)的編譯器、解釋器和虛擬機,并觀(guān)察了運行 13 個(gè)不同程序時(shí)發(fā)生的情況,利用這些程序比較了廣泛使用的算法采用各種常用編程語(yǔ)言時(shí)的實(shí)現情況。

例如,用某個(gè)基準程序計算系統中多個(gè)粒子之間相互作用所需的時(shí)間。用另一個(gè)基準程序分配和釋放大量二叉樹(shù)。再用一個(gè)基準程序更新哈希表,并用該表來(lái)計算特定的 DNA 核苷酸序列。

研究人員發(fā)現,人們往往誤以為軟件的能耗與執行時(shí)間成正比:運行越快一定越好。由此認為,縮短程序的執行時(shí)間將會(huì )減少相同比例的能耗。但這種關(guān)系并不一定這么簡(jiǎn)單,因為能耗是所用功率與持續時(shí)間的乘積。因此,如果更快的程序在執行時(shí)功耗更高,則其不見(jiàn)得能效更高。

最終,研究人員在幾個(gè)實(shí)例中發(fā)現,編程語(yǔ)言的能耗排名與其執行時(shí)間的排名并不相同。例如,在涉及隨機 DNA 序列生成和寫(xiě)入的基準測試中,Fortran 被證明是能效第二高的語(yǔ)言,但它在執行時(shí)間方面卻排在第八位。在計算二叉樹(shù)時(shí),Pascal 和 Chapel 語(yǔ)言的能耗相差在 10% 以?xún),?Chapel 的執行時(shí)間卻少了約 55%。

研究人員的一些結論并不令人驚訝。其中一項發(fā)現是:總體而言,C 語(yǔ)言最快且最節能(57 J,平均執行時(shí)間為 2,019 毫秒)。在 C 語(yǔ)言之后,執行基準測試所需能量和時(shí)間最少的四種語(yǔ)言分別是 Rust(59 J,2,103 毫秒)、C++(77 J,3,155 毫秒)、Ada(98 J,3,740 毫秒)和 Java (114 J,3,821 毫秒)。正如您所料,編譯語(yǔ)言比解釋語(yǔ)言或虛擬機語(yǔ)言更節能。編譯程序執行解決方案平均消耗 120 J,而虛擬機和解釋語(yǔ)言分別消耗 5,760 J 和 2,365 J。

毫無(wú)意外,能效和執行時(shí)間排在末位的五種語(yǔ)言均為解釋語(yǔ)言:能耗方面:Perl (4,604 J)、Python (4,390 J)、Ruby (4,045 J)、JRuby (2,693 J) 和 Lua (2,660 J);執行時(shí)間方面:Lua (16,7416 毫秒)、Python (14,5178 毫秒)、Perl (13,2856 毫秒)、Ruby (119,832 毫秒) 和 TypeScript (93,292 毫秒)。

研究人員還指出了大部分耗散能量的去向; CPU 的能耗始終占所消耗能量的大多數。平均而言,無(wú)論編譯語(yǔ)言、解釋語(yǔ)言還是虛擬語(yǔ)言,CPU 能耗幾乎都高達 90%,其余為 DRAM 能耗。

總而言之,葡萄牙研究人員認為,如果開(kāi)發(fā)人員只考慮執行時(shí)間和能耗,那么確定最佳軟件語(yǔ)言相對容易。但是,如果考慮內存使用因素,則無(wú)法不假思索地做出選擇。

因此,對于地球來(lái)說(shuō)有一個(gè)好消息:可以通過(guò)優(yōu)化軟件來(lái)提高能效。對于學(xué)習編程的學(xué)生而言有一個(gè)壞消息:現在,您不僅會(huì )因為提交的程序不夠緊湊而讓編程老師不悅,程序的能效低也會(huì )有同樣的結果。
本文地址:http://selenalain.com/thread-786592-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页