自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提高能效,用Rust寫代碼

開發(fā) 前端
我們可以真正看到Rust在資源消耗方面的好處。PHP應(yīng)用程序需要13%的CPU來處理請求,而Rust容器只需要1%。同樣,在內(nèi)存使用方面,Rust的性能也是PHP的九倍。

全球數(shù)據(jù)中心的數(shù)量在不斷增加,它們的電力消耗也在不斷增加。提高能效的一種方法當(dāng)然是不斷開發(fā)更好的硬件,但作為軟件開發(fā)人員,我們也應(yīng)該盡自己的一份力量。

根據(jù)國際能源署(IEA)的數(shù)據(jù),2022年全球數(shù)據(jù)中心的用電量估計為240 - 340太瓦時。這相當(dāng)于總電力需求的1.0%至1.3%。這些數(shù)字不包括加密貨幣挖礦,后者可能額外消耗了110太瓦時的電力,占全球電力需求的0.4%。

這篇文章展示了用Rust編碼如何幫助更有效地利用現(xiàn)有資源,幫助保護我們的星球——至少是一點點。

為什么Rust是節(jié)能的?

一般來說,比較編程語言的效率是不容易的,因為結(jié)果受到很多因素的影響。然而,R. Pereira等人的一篇論文比較了27種編程語言的能耗和內(nèi)存效率以及速度。為了獲得盡可能客觀的結(jié)果,他們使用了各種基準(zhǔn)測試進行比較。

該論文指出,Rust在能耗和執(zhí)行時間方面排名第二,僅比第一名c多消耗約3%的能量,執(zhí)行速度僅慢4%。根據(jù)這些測量結(jié)果,Rust非常節(jié)能,特別是如果你將其與PHP的能耗進行比較,PHP的能耗是Rust的28倍,Python的能耗是Rust的74倍。

論文鏈接:https://www.sciencedirect.com/science/article/abs/pii/S0167642321000022?via%3Dihub

實際案例

在Tweede golf,最近在重寫一個項目時體驗了Rust的高效率和速度。他們用Rust構(gòu)建了一個圖書俱樂部管理應(yīng)用程序,它之前是用PHP編寫的,具有相同的功能。這個應(yīng)用程序允許讀書俱樂部借書,并根據(jù)圖書館的等級體系來管理這些書的預(yù)訂、分發(fā)和發(fā)票。

圖片圖片

圖片圖片

老實說,節(jié)省CPU和內(nèi)存并不是重寫的主要原因,維護才是。Rust應(yīng)用程序更容易維護,Rust編譯器或依賴項的版本升級不太可能破壞應(yīng)用程序。此外,使用Rust的效率更高。這是因為有良好的生態(tài)系統(tǒng)和工具鏈,例如編譯器提供了非常有用的錯誤消息,嚴(yán)格的類型系統(tǒng)也有助于編寫正確的軟件。

在他們的示例中,Rust重寫只花費了原始PHP實現(xiàn)一半的開發(fā)時間,這還不包括任何新加需求。當(dāng)然,重新實現(xiàn)現(xiàn)有的實現(xiàn)通常比構(gòu)建原始實現(xiàn)更容易和更快,但是沒有預(yù)料到開發(fā)時間的差異會如此之大。

基準(zhǔn)測試

讓我們看一下性能比較。對于測試,使用了開源HTTP基準(zhǔn)測試工具Siege和25個并發(fā)用戶。這些應(yīng)用程序在一臺Ubuntu筆記本電腦上本地運行,該筆記本電腦配備了第12代英特爾?酷睿?i7-12700H和32gb內(nèi)存。由于應(yīng)用程序是作為容器運行的,使用docker stats命令來估計資源消耗,并使用docker Compose命令在需要的地方限制資源。

執(zhí)行的最直接的基準(zhǔn)測試沒有對PHP或Rust應(yīng)用程序或Siege施加任何限制。針對預(yù)訂概覽頁面執(zhí)行了測試,因為這會給應(yīng)用程序和數(shù)據(jù)庫帶來一些計算負(fù)載。Rust版本由一個應(yīng)用程序容器和一個DB容器組成。

PHP版本還包含一個nginx,它負(fù)責(zé)提供所有的靜態(tài)文件,如CSS, JS和圖標(biāo)。Rust應(yīng)用程序自己為它們服務(wù)??偟腃PU使用情況是所有容器的總和,而App CPU和內(nèi)存使用情況只涉及Rust或PHP容器。

最大CPU

首先,在PHP和Rust應(yīng)用程序上分別加載全部負(fù)載20秒。


Total CPU

App CPU

Memory Usage

Hits

PHP

121 %

37 %

276 MiB

283

Rust

212 %

57 %

31 MiB

11,297

可以看到,Rust在點擊次數(shù)(即在20秒內(nèi)加載的頁面數(shù)量)上比PHP高出近4000 %。此外,我們看到PHP需要的內(nèi)存幾乎是Rust應(yīng)用程序的9倍。

限定CPU

你可能會認(rèn)為這是一種不公平的比較,因為Rust能夠利用更多的CPU資源。因此,將每個應(yīng)用容器的CPU使用率限制在20%,并執(zhí)行相同的測試。


Total CPU

App CPU

Memory Usage

Hits

PHP

44 %

20 %

96.3 MiB

69

Rust

55 %

20 %

10.8 MiB

2,275

Rust應(yīng)用程序的總CPU使用量仍然更高,這與Rust能夠處理33倍以上的請求這一事實有關(guān),因此給數(shù)據(jù)庫帶來了更高的負(fù)載。同樣,我們可以看到PHP使用了大約9倍的內(nèi)存。

正常測試

這些雖然意義重大,但都是非常理論化的測試。在實踐中,頁面上不會有這么多用戶,而且在加載下一個頁面之前,他們也會花幾秒鐘的時間對一個頁面的加載做出反應(yīng)。為了更真實地測試這一點,我們?yōu)镾iege提供了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應(yīng)用程序需要13%的CPU來處理請求,而Rust容器只需要1%。同樣,在內(nèi)存使用方面,Rust的性能也是PHP的九倍。

事實證明,Rust不僅對開發(fā)人員來說更有趣,而且對資源也非常友好。我們已經(jīng)看到新的Rust應(yīng)用程序比舊的PHP實現(xiàn)快40倍。在集群中,我們觀察到資源使用的顯著減少。

責(zé)任編輯:武曉燕 來源: coding到燈火闌珊
相關(guān)推薦

2022-12-15 10:16:23

2019-10-22 11:30:29

數(shù)據(jù)中心服務(wù)器技術(shù)

2014-02-25 15:44:31

大數(shù)據(jù)

2021-04-16 11:17:34

數(shù)據(jù)中心微軟軟件

2023-06-19 14:14:24

Rust程序Web

2023-10-23 16:21:32

工智能芯片IBM

2024-03-08 10:48:10

GoRust高性能

2023-05-04 07:34:37

Rust代碼CPU

2009-06-03 15:31:40

Eclipse插件提高代碼質(zhì)量

2013-12-03 09:28:02

2023-04-17 16:40:12

能源管理綠色數(shù)字化轉(zhuǎn)型

2021-04-05 22:38:30

Python操作符代碼

2009-07-28 18:48:35

臺式機數(shù)據(jù)中心刀片

2023-05-23 13:59:41

RustPython程序

2009-07-28 16:51:27

臺式機數(shù)據(jù)中心能效

2016-03-30 10:36:13

施耐德DCIM信息化

2022-10-27 16:25:17

數(shù)據(jù)中心網(wǎng)絡(luò)優(yōu)化

2023-03-17 12:56:51

數(shù)字孿生工業(yè)自動化

2023-03-02 14:24:01

智能建筑物聯(lián)網(wǎng)能源管理

2023-06-30 14:00:57

點贊
收藏

51CTO技術(shù)棧公眾號