-
Notifications
You must be signed in to change notification settings - Fork 19
benchmark v2.0.14 2025‐08‐03
Adam Ning edited this page Aug 2, 2025
·
7 revisions
- Intel(R) Core(TM) i7-8550U 4 cores with 8 hyper-threads, turbo boost on
- Ubuntu 24.04
- rust 1.87.0
- tokio 1.47.0
- crossbeam v0.8.4
- flume 0.11.1
- kanal 0.1.1
unit: million/s
| mpsc bounded_async (size 100) | 1x1 | 2x1 | 4x1 | 8x1 | 16x1 |
|---|---|---|---|---|---|
| crossfire::mpmc | 21.506 | 16.012 | 14.306 | 10.294 | 12.251 |
| crossfire::mpsc | 22.345 | 18.062 | 14.405 | 10.326 | 10.403 |
| crossfire::spsc | 25.205 | ||||
| kanal | 8.4339 | 8.3596 | 7.7418 | 7.6994 | 7.8384 |
| flume | 5.3625 | 4.3943 | 2.9271 | 1.9059 | 1.4388 |

| mpmc bounded_async (size 100) | 2x2 | 4x4 | 8x8 | 16x16 | |
|---|---|---|---|---|---|
| crossfire::mpmc | 15.98 | 16.082 | 13.595 | 13.433 | |
| kanal | 16.45 | 4.3938 | 5.9732 | 11.752 | |
| flume | 4.1362 | 2.685 | 2.3369 | 2.2937 |

unit: million/s
| mpsc bounded_async (size 1) | 1x1 | 2x1 | 4x1 | 8x1 | 16x1 |
|---|---|---|---|---|---|
| crossfire::mpmc | 5.0778 | 4.5659 | 5.928 | 5.2751 | 5.2382 |
| crossfire::mpsc | 5.1416 | 5.2351 | 5.9974 | 5.2129 | 5.304 |
| crossfire::spsc | 5.2958 | ||||
| flume | 0.17626 | 0.24744 | 0.42052 | 0.56692 | 0.53564 |
| kanal | 0.32333 | 0.38732 | 0.55014 | 0.84246 | 0.70997 |

unit: million/s
| mpsc unbounded_async | 1x1 | 2x1 | 4x1 | 8x1 | 16x1 |
|---|---|---|---|---|---|
| crossfire::mpmc | 19.823 | 22.527 | 20.89 | 17.932 | 18.442 |
| crossfire::mpsc | 20.357 | 22.222 | 20.884 | 18.726 | 18.392 |
| crossfire::spsc | 20.478 | ||||
| flume | 7.9879 | 8.186 | 6.2164 | 5.0646 | 5.0781 |
| kanal | 23.312 | 24.798 | 23.36 | 21.38 | 22.114 |

unit: million/s
| mpmc ubounded_async | 2x2 | 4x4 | 8x8 | 16x16 | |
|---|---|---|---|---|---|
| crossfire::mpmc | 24.809 | 19.806 | 19.05 | 19.308 | |
| flume | 4.7015 | 3.1206 | 3.0562 | 2.9572 | |
| kanal | 19.235 | 14.868 | 13.537 | 13.014 |

NOTE: crossfire v2.0.X re-exported blocking context API from crossbeam.
unit: million/s
| mpsc bounded_sync (size 1) | 1x1 | 2x1 | 4x1 | 8x1 | 16x1 |
|---|---|---|---|---|---|
| crossbeam | 4.8835 | 4.8182 | 6.3623 | 5.3511 | 4.8268 |
| kanal | 2.8673 | 3.1613 | 2.2197 | 1.205 | 0.81686 |
unit: million/s
| mpsc bounded_sync (size 100) | 1x1 | 2x1 | 4x1 | 8x1 | 16x1 |
|---|---|---|---|---|---|
| crossbeam | 17.817 | 18.881 | 19.659 | 19.553 | 16.912 |
| kanal | 6.5858 | 5.1853 | 7.092 | 3.2021 | 2.2863 |
| flume | 7.9591 | 5.4153 | 2.0428 | 0.71437 | 0.3531 |
| mpmc bounded_sync (size 100) | 2x2 | 4x4 | 8x8 | 16x16 | |
|---|---|---|---|---|---|
| crossbeam | 14.199 | 15.507 | 13.926 | 8.9083 | |
| kanal | 6.069 | 7.1058 | 6.5273 | 6.2235 | |
| flume | 4.4146 | 2.568 | 1.8669 | 1.4746 |
unit: million/s
| mpsc unbounded_sync | 1x1 | 2x1 | 4x1 | 8x1 | 16x1 |
|---|---|---|---|---|---|
| crossbeam | 24.926 | 33.679 | 30.299 | 28.324 | 22.72 |
| kanal | 36.218 | 34.118 | 31.986 | 27.859 | 24.069 |
| mpmc unbounded_sync | 2x2 | 4x4 | 8x8 | 16x16 | |
|---|---|---|---|---|---|
| crossbeam | 26.689 | 24.013 | 25.614 | 25.543 | |
| kanal | 26.063 | 20.549 | 21.13 | 15.569 |
-
crossfire v2.0.14 optimised size 1 with backoff, reached the same level of blocking context as crossbeam, and exceeded flume or kanal.
-
crossfire bounded channel optimised a lot during v2.0.5 & v2.0.7, 2 times faster than v2.0.0, already exceeded the scores of kanal.
-
kanal unbounded channel might grow the allocation aggressively, without shrinking, a bit faster than crossfire/crossbeam.
-
The speed of kanal fluctuated during benchmark, non-regularly changing upon increasing the concurrency.