[英]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.