vibe-d / vibe.d

Official vibe.d development
MIT License
1.15k stars 284 forks source link

http upload server benchmark #429

Open cmpxchg16 opened 10 years ago

cmpxchg16 commented 10 years ago

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!

s-ludwig commented 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.

ilya-stromberg commented 10 years ago

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.

nazriel commented 10 years ago

@cmpxchg16 could you tell how you were doing your measurements? Thanks!

cmpxchg16 commented 10 years ago

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 .