Benchmarks to compare the performance of async runtimes / fork-join frameworks.
Currently only contains 3 frameworks:
And 3 benchmarks:
- recursive fibonacci (forks x2)
- skynet (original link) but increased to 100M tasks (forks x10)
- nqueens (forks up to x14)
Current Benchmark Results:
Runtime | libfork | TooManyCooks | concurrencpp |
---|---|---|---|
Mean Ratio to Best (lower is better) |
1.00x | 1.15x | 190.99x |
fib(40) | 138141 us | 164062 us | 29761567 us |
skynet | 45584 us | 50445 us | 11943488 us |
nqueens | 83572 us | 95431 us | 7981495 us |
Benchmark configuration:
- Processor: EPYC 7742 64-core processor
- Worker Thread Count: 64 (no SMT)
- OS: Debian 12 Server
- Compiler: Clang 18.1.2 Release (-O3 -march=native)
- CPU boost enabled / schedutil governor
- Linked against libtcmalloc_minimal.so.4
Frameworks to come:
- (C++) Intel TBB
- (C++) Staccato
- (C++) Taskflow
- (C#) .Net thread pool
- (Rust) tokio
- (Golang) goroutines
Benchmarks to come:
- Lots of good inspiration here