繁体   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