This is a highly modified fork of the crossbeam-channel benchmarks. to keep track of Kanal library stats in comparison with other competitors.
seq
: A single thread sendsN
messages. Then it receivesN
messages.spsc
: One thread sendsN
messages. Another thread receivesN
messages.mpsc
:T
threads sendN / T
messages each. One thread receivesN
messages.mpmc
:T
threads sendN / T
messages each.T
other threads receiveN / T
messages each.select_rx
:T
threads sendN / T
messages each into a separate channel. Another thread receivesN
messages by selecting over theT
channels.select_both
:T
threads sendN / T
messages each by selecting overT
channels.T
other threads receiveN / T
messages each by selecting over theT
channels.
Default configuration:
N = 5000000
T = 4
Runs benchmarks, stores results into *.csv
files in the target folder, and generates multiple png file for each test category:
# Results will be saved in `target`.
./run.sh
Dependencies:
- Rust (latest)
- Go
- Bash
- libcairo2-dev
- Python
- pygal
- cairosvg
- tk
- PIL
You can follow community benchmarks, and also share your results by opening an issue with the format shown in results section.
Machine: AMD Ryzen Threadripper 2950X 16-Core Processor
Rust: rustc rustc 1.64.0
Go: go version go1.19.2 linux/amd64
OS (uname -a
): Linux 5.13.0-35-generic #40~20.04.1-Ubuntu SMP Mon Mar 7 09:18:32 UTC 2022 x86_64
Date: Oct 16, 2022