Open cmpxchg16 opened 10 years ago
settings.options |= HTTPServerOption.distribute
should probably be added and using "versions": ["VibeManualMemoryManagement"]
in package.json should improve performance. But there is unfortunately one thing that is currently implemented without asynchronous I/O in the libevent driver*, and that is file I/O. It's planned since a long time to make file access threaded, but this hasn't yet been implemented. But enabling the distribute option should help here.
* the win32 driver correctly uses asynchronous file I/O.
Also, GDC and LDC generate faster code than DMD. Unfortunately, they have errors with Vibe.d, but I believe that it will be fixed. But you can try to use it, maybe it will be fine for this simple case.
@cmpxchg16 could you tell how you were doing your measurements? Thanks!
Hi,
tool that I wrote: gobench You can see the usage in the README.md
Cheers, Uri Shamay. On Feb 13, 2014 10:57 AM, "Damian Ziemba" notifications@github.com wrote:
@cmpxchg16 https://github.com/cmpxchg16 could you tell how you were doing your measurements? Thanks!
Reply to this email directly or view it on GitHubhttps://github.com/rejectedsoftware/vibe.d/issues/429#issuecomment-34959224 .
Hi!
I wrote some small implementation to http upload server::receiving post body into file. To compare the numbers I wrote it also in GO, and the GO implementation give 2X better numbers...
Implementations:
vibe.d:
https://github.com/cmpxchg16/http-upload-server-benchmark/blob/master/vibe.d/source/app.d
GO:
https://github.com/cmpxchg16/http-upload-server-benchmark/blob/master/go/http-upload-server.go
Environment:
Ubuntu 13.10 x86_64 4 GB RAM Intel 4 cores SSD
vibe.d 0.7.18 + DMD 2.064 GO 1.2
sysctl:
net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_syncookies = 0 net.ipv4.ip_local_port_range = 1024 65535
ulimit -n 200000
Can you please advice :D Thanks!