Can we beat wrk?

Just for fun, holiday project. I was trying to beat wrk for simple get request.
Disclaimer: i was using claude code for prototyping and optimization.

Results are here: rwrk/PERFORMANCE.md at master · arch7tect/rwrk · GitHub

key findings:

  • reqwest is slower then row hyper ~4-5%
  • wrk is very fast, but it depends heavily on the number of threads and connections
  • the number of Rust workers has a significant impact on the result

config:
Platform: macOS, 16 cores

rwrk: 56x CPU cores = 896 async workers (default)
./target/release/rwrk -u https://exposeme.org/ -t 30

wrk: 64 threads, 704 connections (optimal)
wrk -t64 -c704 -d30s https://exposeme.org/

current results:
rwrk - 7,145 req/sec
wrk - 7,143 req/sec

PS: I couldn't solve a problem of correct MB/sec counting. wrt reads from a raw socket so it is easy to measure total bytes. But I couldn't find a way to count MB/sec (including headers) in the hyper client.
PPS: updated figures with benchmark series in controlled environment.

wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue.

absolutely correct. my question was, can async rust beat wrk in performance?

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.