Now that Crystal 0.31.0 has been released! it’s probably a good idea to re-run benchmarks.
I’ve tried a hello world http server on MacOS with Crystal 0.31.0 and max I can get is about 48K req/s
in single thread mode and 84K req/s
in multithread mode with CRYSTAL_WORKERS=3
(other number of workers perform worse for me).
This is about 1.8 more throughput which is less that mentioned in first article https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html where it goes from like 48K
to about 120K
for 3 workers as shown on charts. That’s about 2.5 more throughput.
UPDATE: Chart at https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html it’s ~ 120K
for CRYSTAL_WORKERS=4
, but still, even CRYSTAL_WORKERS=2
seem to give better results than CRYSTAL_WORKERS=3
in my case.
I assume this has to do with either some commits landed after original article or my setup.
My env:
$ crystal --version
Crystal 0.31.0 (2019-09-24)
LLVM: 8.0.1
Default target: x86_64-apple-macosx
I’ve used http server from Crystal’s home page:
require "http/server"
server = HTTP::Server.new do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world, got #{context.request.path}!"
end
puts "Listening on http://127.0.0.1:8080"
server.listen(8080)
With
$ wrk -d10s -t2 -c128 --latency http://localhost:8080/foo