簡體   English   中英

dlang vibe.d RESTful服務性能

[英]dlang vibe.d RESTful Service Performance

謝謝您的幫助。

題:
與手動創建請求處理程序相比,為什么在dlang vibe.d中使用rest接口時我的REST服務似乎表現不佳?

更多信息:
我一直在使用dlang中的vibe.d庫對RESTful服務進行原型設計。 我正在運行一個測試,其中客戶端使用給定大小的有效負載(例如2048字節)將客戶端發送GET和POST請求發送到服務器(即GET響應將為2k,POST請求將為2k)。

我正在vibe.d庫中使用“ registerRestInterface ”和“ RestInterfaceClient ” API來創建我的服務器和客戶端,就像這樣...

服務器:

auto routes = new URLRouter;      

registerRestInterface(routes, new ArtifactArchive());

auto settings = new HTTPServerSettings();

settings.port = port;
settings.bindAddresses = [host];
settings.options |= HTTPServerOption.distribute;

listenHTTP(settings, routes);

runEventLoop();

客戶:

IArtifactArchive archive = new RestInterfaceClient!IArtifactArchive(endpoint)  
IArtifactArchive.Payload result;  
result = archive.getContents(info.FileDescriptor, offset, info.BlockSize);

我沒有在界面中做任何花哨的事情。 只需填充一個字節數組並將其傳遞。 我知道性能取決於許多不同的事物。 但是在vibe.d中使用REST接口時,我似乎看到約160kB的傳輸速率,而在使用手動http請求處理程序時,這樣的傳輸率約為5MB:

void ManualHandleRequest(HTTPServerRequest req, HTTPServerResponse res) ...  
listenHTTP(settings, &ManualHandleRequest);

我真的很喜歡REST接口API,但是使用它不會造成那種性能損失。 關於為什么它看起來比其他方法慢得多的想法? 也許我正在配置錯誤或缺少某些內容。 我對D編程語言和vibe.d庫有些陌生。

感謝您的時間!

我懷疑使用自定義請求處理程序實際上會將響應寫為字節數組。 REST接口生成器默認將所有返回數據序列化為JSON,與原始數組相比會產生巨大的開銷。

不過,這只是一個隨機的猜測,我需要查看實際的REST方法實現以肯定地說和/或提出解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM