研究人員以各種高階開發語言,包括Rust、Go、Java以及C#,為英特爾ixgbe的10 Gbit/s網路介面控制器(NIC)系列,開發了用戶空間網路驅動程式ixy,ixy沒有相依性且執行速度快,能讓開發者快速地用來建構應用程式。而不同語言實作ixy,則可以被用來比較每種語言的效能。

研究人員在論文中比較3.3 GHz雙向轉發效能(下圖),發現Rust實作雖然處理每個資料封包,比C實作執行還要多63%的指令,但是速度只慢了4%,C的效能表現仍是所有語言之冠,但研究人員提到,背後的原因是Rust應用了邊界檢查(Bounds Checking),但是C語言沒有,另一個原因則是,C在DMA緩衝區不需要包裝器物件。

而除了Rust以及C,Go語言也表現良好,特別是垃圾回收器在極重的工作負載下,依然能以低於100微秒的延遲執行(下圖)。研究人員也提到,Rust能夠用來開發安全的驅動程式,因為Rust使用基於所有權的記憶體管理,比起使用基於垃圾回收的語言,能夠在不影響延遲的情況下,提供更多安全的功能,但是如果應用程式可以忍受因垃圾回收所造成亞毫秒級的延遲,那Go和C#也是用來開發驅動程式的好語言。


Advertisement

更多 iThome相關內容