dlang vibe.d RESTful服务性能
谢谢你的帮助 问题:dlang vibe.d RESTful服务性能,rest,d,vibed,Rest,D,Vibed,谢谢你的帮助 问题: 与手动创建请求处理程序相比,为什么在dlang vibe.d中使用REST接口时,我的REST服务的性能如此糟糕 更多信息: 我一直在使用dlang中的vibe.d库创建RESTful服务的原型。我正在运行一个测试,其中客户机向服务器发送GET和POST请求,有效负载为给定的大小,比如2048字节(即GET响应为2k,POST请求为2k) 我正在使用vibe.d库中的“registerRestInterface”和“RestInterfaceClient”API创建类似这样
与手动创建请求处理程序相比,为什么在dlang vibe.d中使用REST接口时,我的REST服务的性能如此糟糕 更多信息:
我一直在使用dlang中的vibe.d库创建RESTful服务的原型。我正在运行一个测试,其中客户机向服务器发送GET和POST请求,有效负载为给定的大小,比如2048字节(即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);
客户端:
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方法实现,才能确定答案和/或提出解决方案。您可能会在vibe.d github页面上提交一个问题,或者在vibe.d论坛上发布一个问题。如果你得到答复,请发回。谢谢!我在被拒绝的软件论坛上放了一些东西。如果我听到什么,我会发回的。