全球數據中心的數量在不斷增加,它們的電力消耗也在不斷增加。提高能效的一種方法當然是不斷開發更好的硬件,但作為軟件開發人員,我們也應該盡自己的一份力量。
根據國際能源署(IEA)的數據,2022年全球數據中心的用電量估計為240 - 340太瓦時。這相當于總電力需求的1.0%至1.3%。這些數字不包括加密貨幣挖礦,后者可能額外消耗了110太瓦時的電力,占全球電力需求的0.4%。
這篇文章展示了用Rust編碼如何幫助更有效地利用現有資源,幫助保護我們的星球——至少是一點點。
一般來說,比較編程語言的效率是不容易的,因為結果受到很多因素的影響。然而,R. Pereira等人的一篇論文比較了27種編程語言的能耗和內存效率以及速度。為了獲得盡可能客觀的結果,他們使用了各種基準測試進行比較。
該論文指出,Rust在能耗和執行時間方面排名第二,僅比第一名c多消耗約3%的能量,執行速度僅慢4%。根據這些測量結果,Rust非常節能,特別是如果你將其與PHP的能耗進行比較,PHP的能耗是Rust的28倍,Python的能耗是Rust的74倍。
論文鏈接:https://www.sciencedirect.com/science/article/abs/pii/S0167642321000022?via%3Dihub
在Tweede golf,最近在重寫一個項目時體驗了Rust的高效率和速度。他們用Rust構建了一個圖書俱樂部管理應用程序,它之前是用PHP編寫的,具有相同的功能。這個應用程序允許讀書俱樂部借書,并根據圖書館的等級體系來管理這些書的預訂、分發和發票。
圖片
圖片
老實說,節省CPU和內存并不是重寫的主要原因,維護才是。Rust應用程序更容易維護,Rust編譯器或依賴項的版本升級不太可能破壞應用程序。此外,使用Rust的效率更高。這是因為有良好的生態系統和工具鏈,例如編譯器提供了非常有用的錯誤消息,嚴格的類型系統也有助于編寫正確的軟件。
在他們的示例中,Rust重寫只花費了原始PHP實現一半的開發時間,這還不包括任何新加需求。當然,重新實現現有的實現通常比構建原始實現更容易和更快,但是沒有預料到開發時間的差異會如此之大。
讓我們看一下性能比較。對于測試,使用了開源HTTP基準測試工具Siege和25個并發用戶。這些應用程序在一臺Ubuntu筆記本電腦上本地運行,該筆記本電腦配備了第12代英特爾?酷睿?i7-12700H和32gb內存。由于應用程序是作為容器運行的,使用docker stats命令來估計資源消耗,并使用docker Compose命令在需要的地方限制資源。
執行的最直接的基準測試沒有對PHP或Rust應用程序或Siege施加任何限制。針對預訂概覽頁面執行了測試,因為這會給應用程序和數據庫帶來一些計算負載。Rust版本由一個應用程序容器和一個DB容器組成。
PHP版本還包含一個nginx,它負責提供所有的靜態文件,如CSS, JS和圖標。Rust應用程序自己為它們服務。總的CPU使用情況是所有容器的總和,而App CPU和內存使用情況只涉及Rust或PHP容器。
首先,在PHP和Rust應用程序上分別加載全部負載20秒。
Total CPU | App CPU | Memory Usage | Hits | |
PHP | 121 % | 37 % | 276 MiB | 283 |
Rust | 212 % | 57 % | 31 MiB | 11,297 |
可以看到,Rust在點擊次數(即在20秒內加載的頁面數量)上比PHP高出近4000 %。此外,我們看到PHP需要的內存幾乎是Rust應用程序的9倍。
你可能會認為這是一種不公平的比較,因為Rust能夠利用更多的CPU資源。因此,將每個應用容器的CPU使用率限制在20%,并執行相同的測試。
Total CPU | App CPU | Memory Usage | Hits | |
PHP | 44 % | 20 % | 96.3 MiB | 69 |
Rust | 55 % | 20 % | 10.8 MiB | 2,275 |
Rust應用程序的總CPU使用量仍然更高,這與Rust能夠處理33倍以上的請求這一事實有關,因此給數據庫帶來了更高的負載。同樣,我們可以看到PHP使用了大約9倍的內存。
這些雖然意義重大,但都是非常理論化的測試。在實踐中,頁面上不會有這么多用戶,而且在加載下一個頁面之前,他們也會花幾秒鐘的時間對一個頁面的加載做出反應。為了更真實地測試這一點,我們為Siege提供了9個不同的url,這些url在頁面加載后0到10秒之間隨機訪問。為了獲得更好的概述,我們讓這個測試運行60秒而不是20秒。
Total CPU | App CPU | Memory Usage | Hits | |
PHP | 41 % | 13 % | 108.6 MiB | 285 |
Rust | 2.6 % | 1 % | 12.1 MiB | 315 |
在這里,我們可以真正看到Rust在資源消耗方面的好處。PHP應用程序需要13%的CPU來處理請求,而Rust容器只需要1%。同樣,在內存使用方面,Rust的性能也是PHP的九倍。
事實證明,Rust不僅對開發人員來說更有趣,而且對資源也非常友好。我們已經看到新的Rust應用程序比舊的PHP實現快40倍。在集群中,我們觀察到資源使用的顯著減少。
本文鏈接:http://www.tebozhan.com/showinfo-26-93372-0.html提高能效,用Rust寫代碼
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com