Simple web server benchmark - vibe.d is slower than node.js and Go?
Sönke Ludwig
sludwig+d at outerproduct.org
Thu Sep 21 12:50:41 UTC 2017
Am 21.09.2017 um 14:41 schrieb Vadim Lopatin:
> On Thursday, 21 September 2017 at 10:21:17 UTC, Sönke Ludwig wrote:
>>> shared static this()
>>> {
>>> (...)
>>> }
>>
>> BTW, I'd recommend using
>>
>> void main()
>> {
>> (...)
>> runApplication();
>> }
>>
>> instead and dropping the VibeDefaultMain version in the package
>> recipe. The old approach is planned to be faded out slowly, because it
>> requires some special DUB support that would be nice to see gone at
>> some point.
>
> Thank you!
> Trying to use multithreaded mode.
>
> Under windows, best Vibe.d results are equal to results of Go server.
> Under linux, Vibe.d is still slower even if there are 4 threads listening.
>
> Results:
>
> OS lang:config req/s comments
> ======= ========== ======= ==========
> Linux go 53K
> Linux D:default 48K 1 thread
> Linux D:libevent 48K 1 thread
> Linux D:libasync 46.5K 4 threads
>
> Windows go 12K
> Windows D:default 12K 4 threads
> Windows D:libevent 12K 4 threads
> Windows D:libasync 7K 4 threads
>
> Under Linux in default and libevent configurations, I see error messages
> from 3 of 4 threads - looks like only one thread can process connections.
>
> Failed to listen on 0.0.0.0:3000
> Task terminated with uncaught exception: Failed to listen for incoming
> HTTP connections on any of the supplied interfaces.
>
>
Oh, sorry, I forgot the reusePort option, so that multiple sockets can
listen on the same port:
auto settings = new HTTPServerSettings("0.0.0.0:3000");
settings.options |= HTTPServerOption.reusePort;
listenHTTP(settings, &handleRequest);
More information about the Digitalmars-d
mailing list