On Sun, 09 Aug 2015 19:10:23 GMT, Etienne Cimon wrote:

On Sat, 08 Aug 2015 16:06:35 GMT, Yazan D wrote:

The code I'm using is available here.

On my windows 8.1 laptop:

I tried this with ./ab -c 1 -n 50000 http://127.0.0.1:8080

Server Software:        vibe.d/0.7.24
Server Hostname:        127.0.0.1
Server Port:            8080

Document Path:          /\=
Document Length:        83 bytes

Concurrency Level:      1
Time taken for tests:   18.917 seconds
Complete requests:      50000
Failed requests:        0
Non-2xx responses:      50000
Total transferred:      11500000 bytes
HTML transferred:       4150000 bytes
Requests per second:    2643.13 [#/sec] (mean)
Time per request:       0.378 [ms] (mean)
Time per request:       0.378 [ms] (mean, across all concurrent requests)
Transfer rate:          593.67 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.6      0       5
Processing:     0    0   1.1      0       5
Waiting:        0    0   1.0      0       5
Total:          0    0   1.2      0       5

Percentage of the requests served within a certain time (ms)
  50%      0
  66%      0
  75%      0
  80%      0
  90%      0
  95%      5
  98%      5
  99%      5
 100%      5 (longest request)

With your code in vibe.d and libevent in release mode:

C:\Users\Etienne_2\documents\yula> dub run --build=release
Performing "release" build using dmd for x86.
Building vibe-d 0.7.24-rc.2+commit.3.g3d0974f configuration "libevent"...
Building example ~master configuration "application"...
Linking...
Copying files for vibe-d...
Running .\example.exe
min : 0000.33  ms
max : 0003.88  ms
sum : 19967.09  ms
mean: 0000.40  ms
rps : 02504.1 rps

Pretty much the same ... ab might have an advantage if it leaves some headers out, I didn't get more into depth about it, I'll try and understand how you're getting those results.

I tried using libasync, and I get an exception everytime at the 100th request(!?).

Which libasync version did you use for this?

Hm sorry, I just noticed I was testing with vibe.d keep-alive vs ab no keep-alive.

I think ab might have some optimizations, will have to check