甫成立公司的Deno發布最新的1.9版本,這個版本有許多新功能以及效能改進,包括請Hyper團隊打造了一個原生HTTP/2網頁伺服器,改善吞吐量達48%,而且在新版本還大幅強化Rust呼叫,改進了98%的效能,並且提升所有常用功能效能達3倍。

當前Deno的HTTP伺服器為std/http,這是一個使用純TypeScript開發,建構在TCP Socket之上的實作,該實作盡管是一個腳本式HTTP伺服器,但是在尾延遲(Tail Latency)上的表現卻十分良好,因此官方提到,std/http唯一的缺點就是只支援HTTP/1.1,並且難以升級成為HTTP/2。

而官方也不想花費心力在開發HTTP元件上,因此便聘了Hyper團隊替Deno建構了一個全新HTTP/2伺服器API,與純TypeScript的HTTP伺服器std/http相比,在他們使用hello-world程式碼測試下,發現新伺服器提升了48%的吞吐量。目前新HTTP/2伺服器API仍在測試階段,開發者需要在API使用--unstable標籤,官方提到,他們會盡量讓API進入穩定階段。

在Deno 1.9中,呼叫Rust的效能也獲得大幅度的改進,官方做了許多努力,改善繫結基礎設施效率,包括移除了1,500行核心程式碼,並且改善基準繫結效能開銷達98%,官方提到,這些工作將會建立更乾淨的操作基礎,使得未來擴充套件以及最佳化工作更容易。

官方解釋,在Deno的早期版本中,opCall遵循請求和回應模式,並將資料編碼成為ArrayBuffers自定義有效負載,而這些負載使用各種編碼,包括JSON、Flatbuffers甚至是自定義二元編碼,而這不只造成效能瓶頸,也提高複雜性和造成碎片化的問題。

因此官方現在決定與其在這些二進位格式之間來回序列化,倒不如直接在v8和Rust之間的值序列化會更有效率,基於這樣的想法官方開發了serde_v8函式庫,目的是要在v8和Rust之間,提供最大效能且零開銷的雙向映射,而因為serde_v8函式庫是使用Rust結構序列化函式庫serde建構而成,所以開發者也能以熟悉的方法使用serde_v8。

這樣的改進大幅提升了Deno的效率,並且使得HTTP平臺的吞吐量與延遲表現更好,開發者可以看到自己的Deno應用程式,在大負載或是存在opCall效率瓶頸的情況,於新的版本獲得大幅效能提升,另外,Deno許多常見的功能,效率也都比過去增加了2倍。


熱門新聞

Advertisement