Performance guide and benchmarks.
If you just want to see the benchmarks, scroll down.
# Performance guide
This is a short guide, from my knowledge, on tuning the performance of polling libraries.
## Achieving good performance with SlotPoller
SlotPoller's main controllable factor is the buffer size. This is also known as the slot count, i.e. the `N` in `StackSlots<N, _>`.
Many other factors are definitely *not* bottlenecks. Allocation is upfront, so even if you use `HeapSlots`, allocation is fast. The poll algorithm is lock-free, so contention is unlikely to be a concern, and StackPoller performs well under contention according to benchmarks.
### Latency and cache usage
Your mileage will vary significantly depending on your application. However, it might be a good idea to start with a small buffer size. A tight cap is likely to deliver good latency and cache hits.
Let's suppose a future represents a client requests, which is a common pattern. With a small buffer size, existing client requests will have to complete before later ones can start. This has two benefits:
A.) Quick and stable responsiveness. It's unlikely that a single client request will (due to bad luck) spend a massive amount of time waiting. Gamers know this as "lag spikes."
B.) Good CPU cache usage. Fewer slots means the code jumps around less.
### Throughput and I/O ratios
An easy way to think of buffer size is to imagine the relation between I/O time and compute.
Does the application spend a lot of time in I/O? If so, many futures should be polled concurrently, so the CPU remains saturated with work. Conversely, if a given task is running for 50% of the time and sleeping for the other 50%, then it only makes sense to have 2 futures per thread.
If you measure how much time a future spends in `Poll::Pending`, and divide that by the total time, you essentially get the I/O time ratio described here. Inverting that ratio will give you way to think about sizing your poller.
If each future spends 90% of its time waiting and 10% active, then the poller size would be ideally capped around 10. This is assuming that wait times are constant.
### Final note
All of this depends on your application profile, which is why the hard work of *applying* these concepts is inevitable and ultimately your responsibility.
# Benchmarks
The benchmarks are located in the `benches/` directory of this repository.
### Disclaimer
Before comparing different libraries, a few observations should be made.
1. The async runtime can be a much bigger factor than the polling library. For example, Tokio's timers are considerably slower than smol's, and this can affect the benchmarks.
2. Real-world applications will always differ from benchmarks, not matter how hard we try to simulate real conditions.
3. Finding and fixing actual bottlemarks will always deliver better results, than merely picking shinier libraries.
That said, targeted benchmarks can show where one software element outpaces another, in isolation from other program components.
### Environment
I ran these tests on a Debian 11-based OS after a fresh boot on Intel i7-10710U (12) @ 4.700GHz, with 16GB of DDR4 RAM, using wall power.
### Libraries under test
For the zetanumbers benchmark, there are about a dozen different polling methods.
For the latency and memory benchmarks, there are 2 controls and 3 libraries, as follows.
Controls:
* The future that takes the longest to complete, ran by itself. This future just sleeps for the longest duration.
* A naive polling library that I wrote. It doesn't track which future was woken when it receives a wake-up, rather it just iterates over an array of futures until it finds the woken ones and polls them.
Libraries:
* `futures` - the well-known crate with FuturesUnordered
* `futures_buffered` - similar to this library in some ways; offers FuturesUnorderedBounded.
* `slotpoller` - this library
During the benchmarks, I also discovered pinning violations in a popular crate (`futures-concurrency`), so it had to be excluded from the results.
### Summary
SlotPoller regularly outperforms both `futures::FuturesUnordered` and `futures_buffered`, especially for multithreaded (contended) workloads. This is according to latency measurements that track poll/wake/completion overhead. By memory usage, SlotPoller is also the most efficient.
Finally, I adapted zetanumber's [futures-concurrency-benchmark](https://github.com/zetanumbers/futures-concurrency-benchmark) and included SlotPoller. Using this benchmark, SlotPoller is faster than several existing future combinators provided by runtimes and other crates.
## Latency
The poller is filled with futures. Each future sleeps for a short sequence of randomly generated durations. This simulates a real workload where tasks are woken up at varying intervals and are polled again thereafter. Futures only start sleeping when they are polled.
The benchmark measures how quickly all the futures can be polled to completion. Therefore, this is a latency benchmark. It measures the cost of the overhead to track pollable futures, poll them, wake them, and drop them.
Note that Tokio's timers are very slow compared to smol, so it may make more sense to look at the smol-related benchmarks.
### Latency - 1-thread benchmark
We start with a single-threaded run. Tasks are just plain timers.
Observations:
* SlotPoller usually performs best
* At some future counts using Tokio, futures-buffered performs slightly better than slotpoller
```
Running benches/latency.rs (target/release/deps/latency-c6d3d63ba928bcd0)
Gnuplot not found, using plotters backend
with smol; latency of 1-thread 32-sized pool/(control = longest sequence)
time: [222.75 µs 223.87 µs 224.89 µs]
Found 46 outliers among 256 measurements (17.97%)
46 (17.97%) low mild
with smol; latency of 1-thread 32-sized pool/(control = simple lib)
time: [196.23 µs 196.26 µs 196.29 µs]
Found 7 outliers among 256 measurements (2.73%)
5 (1.95%) high mild
2 (0.78%) high severe
with smol; latency of 1-thread 32-sized pool/futures
time: [195.05 µs 195.08 µs 195.11 µs]
Found 11 outliers among 256 measurements (4.30%)
5 (1.95%) high mild
6 (2.34%) high severe
with smol; latency of 1-thread 32-sized pool/futures-buffered
time: [193.10 µs 193.12 µs 193.14 µs]
Found 5 outliers among 256 measurements (1.95%)
3 (1.17%) high mild
2 (0.78%) high severe
with smol; latency of 1-thread 32-sized pool/slotpoller-stack
time: [192.75 µs 192.77 µs 192.80 µs]
Found 25 outliers among 256 measurements (9.77%)
3 (1.17%) low mild
16 (6.25%) high mild
6 (2.34%) high severe
with smol; latency of 1-thread 32-sized pool/slotpoller-heap
time: [192.78 µs 192.81 µs 192.83 µs]
Found 22 outliers among 256 measurements (8.59%)
1 (0.39%) low mild
17 (6.64%) high mild
4 (1.56%) high severe
with smol; latency of 1-thread 64-sized pool/(control = longest sequence)
time: [235.71 µs 236.84 µs 237.92 µs]
Found 14 outliers among 256 measurements (5.47%)
14 (5.47%) low mild
with smol; latency of 1-thread 64-sized pool/(control = simple lib)
time: [232.10 µs 232.26 µs 232.42 µs]
Found 19 outliers among 256 measurements (7.42%)
8 (3.12%) high mild
11 (4.30%) high severe
with smol; latency of 1-thread 64-sized pool/futures
time: [226.52 µs 226.64 µs 226.77 µs]
Found 50 outliers among 256 measurements (19.53%)
1 (0.39%) low mild
3 (1.17%) high mild
46 (17.97%) high severe
with smol; latency of 1-thread 64-sized pool/futures-buffered
time: [219.64 µs 219.70 µs 219.77 µs]
Found 30 outliers among 256 measurements (11.72%)
14 (5.47%) high mild
16 (6.25%) high severe
with smol; latency of 1-thread 64-sized pool/slotpoller-stack
time: [218.73 µs 218.78 µs 218.84 µs]
Found 30 outliers among 256 measurements (11.72%)
1 (0.39%) low mild
6 (2.34%) high mild
23 (8.98%) high severe
with smol; latency of 1-thread 64-sized pool/slotpoller-heap
time: [218.57 µs 218.61 µs 218.66 µs]
Found 41 outliers among 256 measurements (16.02%)
2 (0.78%) low mild
9 (3.52%) high mild
30 (11.72%) high severe
with smol; latency of 1-thread 128-sized pool/(control = longest sequence)
time: [247.66 µs 248.46 µs 249.23 µs]
Found 5 outliers among 256 measurements (1.95%)
2 (0.78%) low severe
3 (1.17%) low mild
with smol; latency of 1-thread 128-sized pool/(control = simple lib)
time: [341.67 µs 342.09 µs 342.55 µs]
Found 33 outliers among 256 measurements (12.89%)
25 (9.77%) high mild
8 (3.12%) high severe
with smol; latency of 1-thread 128-sized pool/futures
time: [326.36 µs 326.43 µs 326.51 µs]
Found 25 outliers among 256 measurements (9.77%)
4 (1.56%) low severe
3 (1.17%) low mild
4 (1.56%) high mild
14 (5.47%) high severe
with smol; latency of 1-thread 128-sized pool/futures-buffered
time: [306.28 µs 306.53 µs 306.83 µs]
Found 38 outliers among 256 measurements (14.84%)
6 (2.34%) low mild
9 (3.52%) high mild
23 (8.98%) high severe
with smol; latency of 1-thread 128-sized pool/slotpoller-stack
time: [301.62 µs 302.05 µs 302.50 µs]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) high mild
with smol; latency of 1-thread 128-sized pool/slotpoller-heap
time: [300.33 µs 300.84 µs 301.39 µs]
Found 44 outliers among 256 measurements (17.19%)
1 (0.39%) low mild
5 (1.95%) high mild
38 (14.84%) high severe
with smol; latency of 1-thread 256-sized pool/(control = longest sequence)
time: [254.83 µs 255.85 µs 256.81 µs]
Found 10 outliers among 256 measurements (3.91%)
8 (3.12%) low severe
2 (0.78%) low mild
with smol; latency of 1-thread 256-sized pool/(control = simple lib)
time: [589.15 µs 589.60 µs 590.10 µs]
Found 42 outliers among 256 measurements (16.41%)
15 (5.86%) low severe
2 (0.78%) low mild
25 (9.77%) high severe
with smol; latency of 1-thread 256-sized pool/futures
time: [558.55 µs 558.76 µs 558.97 µs]
Found 6 outliers among 256 measurements (2.34%)
1 (0.39%) low mild
4 (1.56%) high mild
1 (0.39%) high severe
with smol; latency of 1-thread 256-sized pool/futures-buffered
time: [519.58 µs 519.95 µs 520.38 µs]
Found 15 outliers among 256 measurements (5.86%)
1 (0.39%) low severe
2 (0.78%) high mild
12 (4.69%) high severe
with smol; latency of 1-thread 256-sized pool/slotpoller-stack
time: [492.11 µs 492.23 µs 492.36 µs]
Found 25 outliers among 256 measurements (9.77%)
11 (4.30%) low severe
6 (2.34%) low mild
4 (1.56%) high mild
4 (1.56%) high severe
with smol; latency of 1-thread 256-sized pool/slotpoller-heap
time: [492.56 µs 493.02 µs 493.53 µs]
Found 24 outliers among 256 measurements (9.38%)
2 (0.78%) low severe
1 (0.39%) low mild
3 (1.17%) high mild
18 (7.03%) high severe
with smol; latency of 1-thread 512-sized pool/(control = longest sequence)
time: [267.18 µs 267.81 µs 268.42 µs]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) low mild
with smol; latency of 1-thread 512-sized pool/(control = simple lib)
time: [1.1243 ms 1.1255 ms 1.1266 ms]
Found 60 outliers among 256 measurements (23.44%)
15 (5.86%) low severe
12 (4.69%) low mild
8 (3.12%) high mild
25 (9.77%) high severe
with smol; latency of 1-thread 512-sized pool/futures
time: [1.0642 ms 1.0647 ms 1.0653 ms]
Found 7 outliers among 256 measurements (2.73%)
1 (0.39%) low severe
3 (1.17%) low mild
3 (1.17%) high severe
with smol; latency of 1-thread 512-sized pool/futures-buffered
time: [981.04 µs 982.68 µs 984.39 µs]
Found 58 outliers among 256 measurements (22.66%)
16 (6.25%) high mild
42 (16.41%) high severe
with smol; latency of 1-thread 512-sized pool/slotpoller-stack
time: [937.78 µs 940.45 µs 943.27 µs]
Found 60 outliers among 256 measurements (23.44%)
60 (23.44%) high severe
with smol; latency of 1-thread 512-sized pool/slotpoller-heap
time: [932.46 µs 933.68 µs 935.00 µs]
Found 34 outliers among 256 measurements (13.28%)
18 (7.03%) high mild
16 (6.25%) high severe
with smol; latency of 1-thread 1024-sized pool/(control = longest sequence)
time: [273.42 µs 274.58 µs 275.66 µs]
Found 12 outliers among 256 measurements (4.69%)
8 (3.12%) low severe
4 (1.56%) low mild
with smol; latency of 1-thread 1024-sized pool/(control = simple lib)
time: [2.1218 ms 2.1234 ms 2.1251 ms]
Found 33 outliers among 256 measurements (12.89%)
13 (5.08%) high mild
20 (7.81%) high severe
with smol; latency of 1-thread 1024-sized pool/futures
time: [2.1187 ms 2.1250 ms 2.1323 ms]
Found 30 outliers among 256 measurements (11.72%)
2 (0.78%) high mild
28 (10.94%) high severe
with smol; latency of 1-thread 1024-sized pool/futures-buffered
time: [1.9108 ms 1.9111 ms 1.9113 ms]
Found 15 outliers among 256 measurements (5.86%)
4 (1.56%) low severe
7 (2.73%) low mild
3 (1.17%) high mild
1 (0.39%) high severe
with smol; latency of 1-thread 1024-sized pool/slotpoller-stack
time: [1.8441 ms 1.8451 ms 1.8462 ms]
Found 25 outliers among 256 measurements (9.77%)
2 (0.78%) low mild
1 (0.39%) high mild
22 (8.59%) high severe
with smol; latency of 1-thread 1024-sized pool/slotpoller-heap
time: [1.8380 ms 1.8385 ms 1.8391 ms]
Found 5 outliers among 256 measurements (1.95%)
1 (0.39%) high mild
4 (1.56%) high severe
with tokio; latency of 1-thread 32-sized pool/(control = longest sequence)
time: [13.646 ms 13.673 ms 13.701 ms]
Found 5 outliers among 256 measurements (1.95%)
5 (1.95%) low mild
with tokio; latency of 1-thread 32-sized pool/(control = simple lib)
time: [14.756 ms 14.772 ms 14.787 ms]
Found 13 outliers among 256 measurements (5.08%)
12 (4.69%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 32-sized pool/futures
time: [14.775 ms 14.793 ms 14.810 ms]
Found 20 outliers among 256 measurements (7.81%)
5 (1.95%) low severe
15 (5.86%) low mild
with tokio; latency of 1-thread 32-sized pool/futures-buffered
time: [14.765 ms 14.781 ms 14.796 ms]
Found 5 outliers among 256 measurements (1.95%)
5 (1.95%) low mild
with tokio; latency of 1-thread 32-sized pool/slotpoller-stack
time: [14.785 ms 14.798 ms 14.811 ms]
Found 5 outliers among 256 measurements (1.95%)
5 (1.95%) low mild
with tokio; latency of 1-thread 32-sized pool/slotpoller-heap
time: [14.773 ms 14.786 ms 14.799 ms]
Found 6 outliers among 256 measurements (2.34%)
6 (2.34%) low mild
with tokio; latency of 1-thread 64-sized pool/(control = longest sequence)
time: [14.042 ms 14.078 ms 14.115 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) low mild
with tokio; latency of 1-thread 64-sized pool/(control = simple lib)
time: [15.389 ms 15.407 ms 15.425 ms]
Found 9 outliers among 256 measurements (3.52%)
7 (2.73%) low mild
2 (0.78%) high mild
with tokio; latency of 1-thread 64-sized pool/futures
time: [15.476 ms 15.493 ms 15.509 ms]
Found 4 outliers among 256 measurements (1.56%)
3 (1.17%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 64-sized pool/futures-buffered
time: [15.330 ms 15.343 ms 15.356 ms]
Found 3 outliers among 256 measurements (1.17%)
1 (0.39%) low mild
2 (0.78%) high mild
with tokio; latency of 1-thread 64-sized pool/slotpoller-stack
time: [15.321 ms 15.337 ms 15.352 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) low mild
with tokio; latency of 1-thread 64-sized pool/slotpoller-heap
time: [15.348 ms 15.362 ms 15.377 ms]
Found 4 outliers among 256 measurements (1.56%)
1 (0.39%) low severe
3 (1.17%) low mild
with tokio; latency of 1-thread 128-sized pool/(control = longest sequence)
time: [14.565 ms 14.599 ms 14.633 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) low mild
with tokio; latency of 1-thread 128-sized pool/(control = simple lib)
time: [16.328 ms 16.347 ms 16.365 ms]
Found 4 outliers among 256 measurements (1.56%)
3 (1.17%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 128-sized pool/futures
time: [16.370 ms 16.390 ms 16.409 ms]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) low mild
with tokio; latency of 1-thread 128-sized pool/futures-buffered
time: [16.112 ms 16.130 ms 16.147 ms]
Found 14 outliers among 256 measurements (5.47%)
5 (1.95%) low severe
7 (2.73%) low mild
2 (0.78%) high mild
with tokio; latency of 1-thread 128-sized pool/slotpoller-stack
time: [16.103 ms 16.125 ms 16.146 ms]
Found 19 outliers among 256 measurements (7.42%)
4 (1.56%) low severe
14 (5.47%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 128-sized pool/slotpoller-heap
time: [16.136 ms 16.152 ms 16.169 ms]
Found 9 outliers among 256 measurements (3.52%)
6 (2.34%) low mild
3 (1.17%) high mild
with tokio; latency of 1-thread 256-sized pool/(control = longest sequence)
time: [15.135 ms 15.161 ms 15.188 ms]
Found 4 outliers among 256 measurements (1.56%)
2 (0.78%) low mild
2 (0.78%) high mild
with tokio; latency of 1-thread 256-sized pool/(control = simple lib)
time: [16.890 ms 16.902 ms 16.914 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) high mild
with tokio; latency of 1-thread 256-sized pool/futures
time: [17.134 ms 17.148 ms 17.162 ms]
Found 10 outliers among 256 measurements (3.91%)
1 (0.39%) low severe
8 (3.12%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 256-sized pool/futures-buffered
time: [16.920 ms 16.936 ms 16.952 ms]
Found 8 outliers among 256 measurements (3.12%)
7 (2.73%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 256-sized pool/slotpoller-stack
time: [16.882 ms 16.898 ms 16.913 ms]
Found 11 outliers among 256 measurements (4.30%)
3 (1.17%) low severe
5 (1.95%) low mild
3 (1.17%) high mild
with tokio; latency of 1-thread 256-sized pool/slotpoller-heap
time: [16.967 ms 16.983 ms 16.999 ms]
Found 5 outliers among 256 measurements (1.95%)
1 (0.39%) low severe
3 (1.17%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 512-sized pool/(control = longest sequence)
time: [15.669 ms 15.698 ms 15.726 ms]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) low mild
with tokio; latency of 1-thread 512-sized pool/(control = simple lib)
time: [19.055 ms 19.079 ms 19.102 ms]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) low mild
with tokio; latency of 1-thread 512-sized pool/futures
time: [18.735 ms 18.759 ms 18.782 ms]
with tokio; latency of 1-thread 512-sized pool/futures-buffered
time: [17.777 ms 17.792 ms 17.808 ms]
Found 5 outliers among 256 measurements (1.95%)
2 (0.78%) low mild
3 (1.17%) high mild
with tokio; latency of 1-thread 512-sized pool/slotpoller-stack
time: [18.012 ms 18.027 ms 18.042 ms]
Found 10 outliers among 256 measurements (3.91%)
3 (1.17%) low severe
5 (1.95%) low mild
2 (0.78%) high mild
with tokio; latency of 1-thread 512-sized pool/slotpoller-heap
time: [18.075 ms 18.087 ms 18.099 ms]
Found 11 outliers among 256 measurements (4.30%)
7 (2.73%) low mild
3 (1.17%) high mild
1 (0.39%) high severe
with tokio; latency of 1-thread 1024-sized pool/(control = longest sequence)
time: [16.289 ms 16.319 ms 16.349 ms]
Found 3 outliers among 256 measurements (1.17%)
2 (0.78%) low mild
1 (0.39%) high mild
with tokio; latency of 1-thread 1024-sized pool/(control = simple lib)
time: [21.398 ms 21.426 ms 21.454 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) low mild
with tokio; latency of 1-thread 1024-sized pool/futures
time: [21.315 ms 21.345 ms 21.375 ms]
Found 17 outliers among 256 measurements (6.64%)
2 (0.78%) low severe
15 (5.86%) low mild
with tokio; latency of 1-thread 1024-sized pool/futures-buffered
time: [20.518 ms 20.558 ms 20.596 ms]
Found 10 outliers among 256 measurements (3.91%)
6 (2.34%) low severe
4 (1.56%) low mild
with tokio; latency of 1-thread 1024-sized pool/slotpoller-stack
time: [21.993 ms 22.059 ms 22.123 ms]
Found 15 outliers among 256 measurements (5.86%)
3 (1.17%) low severe
12 (4.69%) low mild
with tokio; latency of 1-thread 1024-sized pool/slotpoller-heap
time: [22.144 ms 22.203 ms 22.259 ms]
Found 12 outliers among 256 measurements (4.69%)
3 (1.17%) low severe
9 (3.52%) low mild
```
### Latency - mild contention benchmark
Same as the previous, but 80% of futures are spawned as new tasks on the runtime. This means wake-ups are subject to mild contention, and futures have additional code paths.
The smol runtime uses a single background thread (in addition to the main thread). With Tokio, we use the current-thread flavor, which is technically just 1 thread, but it simulates probable Tokio usage.
```
with smol; latency of 2-thread 32-sized pool/(control = longest sequence)
time: [221.98 µs 223.37 µs 224.60 µs]
Found 25 outliers among 256 measurements (9.77%)
15 (5.86%) low severe
10 (3.91%) low mild
with smol; latency of 2-thread 32-sized pool/(control = simple lib)
time: [231.51 µs 231.67 µs 231.80 µs]
with smol; latency of 2-thread 32-sized pool/futures
time: [231.63 µs 231.73 µs 231.83 µs]
Found 3 outliers among 256 measurements (1.17%)
1 (0.39%) low mild
1 (0.39%) high mild
1 (0.39%) high severe
with smol; latency of 2-thread 32-sized pool/futures-buffered
time: [231.17 µs 231.27 µs 231.37 µs]
Found 5 outliers among 256 measurements (1.95%)
3 (1.17%) high mild
2 (0.78%) high severe
with smol; latency of 2-thread 32-sized pool/slotpoller-stack
time: [230.64 µs 230.74 µs 230.84 µs]
Found 3 outliers among 256 measurements (1.17%)
1 (0.39%) high mild
2 (0.78%) high severe
with smol; latency of 2-thread 32-sized pool/slotpoller-heap
time: [230.81 µs 230.91 µs 231.00 µs]
Found 3 outliers among 256 measurements (1.17%)
1 (0.39%) high mild
2 (0.78%) high severe
with smol; latency of 2-thread 64-sized pool/(control = longest sequence)
time: [234.49 µs 236.11 µs 237.55 µs]
Found 20 outliers among 256 measurements (7.81%)
20 (7.81%) low mild
with smol; latency of 2-thread 64-sized pool/(control = simple lib)
time: [271.85 µs 272.15 µs 272.42 µs]
with smol; latency of 2-thread 64-sized pool/futures
time: [270.65 µs 270.84 µs 271.02 µs]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) high mild
with smol; latency of 2-thread 64-sized pool/futures-buffered
time: [268.15 µs 268.29 µs 268.43 µs]
with smol; latency of 2-thread 64-sized pool/slotpoller-stack
time: [267.89 µs 268.05 µs 268.21 µs]
Found 6 outliers among 256 measurements (2.34%)
5 (1.95%) high mild
1 (0.39%) high severe
with smol; latency of 2-thread 64-sized pool/slotpoller-heap
time: [267.99 µs 268.16 µs 268.32 µs]
Found 4 outliers among 256 measurements (1.56%)
1 (0.39%) low mild
2 (0.78%) high mild
1 (0.39%) high severe
with smol; latency of 2-thread 128-sized pool/(control = longest sequence)
time: [246.65 µs 247.58 µs 248.45 µs]
Found 4 outliers among 256 measurements (1.56%)
2 (0.78%) low severe
2 (0.78%) low mild
with smol; latency of 2-thread 128-sized pool/(control = simple lib)
time: [381.51 µs 382.12 µs 382.71 µs]
with smol; latency of 2-thread 128-sized pool/futures
time: [382.17 µs 382.67 µs 383.17 µs]
Found 2 outliers among 256 measurements (0.78%)
1 (0.39%) high mild
1 (0.39%) high severe
with smol; latency of 2-thread 128-sized pool/futures-buffered
time: [382.24 µs 382.85 µs 383.51 µs]
Found 8 outliers among 256 measurements (3.12%)
8 (3.12%) high mild
with smol; latency of 2-thread 128-sized pool/slotpoller-stack
time: [378.89 µs 379.45 µs 379.99 µs]
with smol; latency of 2-thread 128-sized pool/slotpoller-heap
time: [379.14 µs 379.73 µs 380.33 µs]
Found 3 outliers among 256 measurements (1.17%)
1 (0.39%) low mild
2 (0.78%) high mild
with smol; latency of 2-thread 256-sized pool/(control = longest sequence)
time: [258.14 µs 259.05 µs 259.91 µs]
Found 7 outliers among 256 measurements (2.73%)
3 (1.17%) low severe
4 (1.56%) low mild
with smol; latency of 2-thread 256-sized pool/(control = simple lib)
time: [657.44 µs 659.64 µs 661.78 µs]
Found 28 outliers among 256 measurements (10.94%)
28 (10.94%) low mild
with smol; latency of 2-thread 256-sized pool/futures
time: [664.71 µs 665.52 µs 666.34 µs]
Found 31 outliers among 256 measurements (12.11%)
15 (5.86%) low mild
13 (5.08%) high mild
3 (1.17%) high severe
with smol; latency of 2-thread 256-sized pool/futures-buffered
time: [663.30 µs 664.12 µs 664.94 µs]
with smol; latency of 2-thread 256-sized pool/slotpoller-stack
time: [653.44 µs 654.26 µs 655.10 µs]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) high mild
with smol; latency of 2-thread 256-sized pool/slotpoller-heap
time: [656.75 µs 657.94 µs 659.16 µs]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) high mild
with smol; latency of 2-thread 512-sized pool/(control = longest sequence)
time: [265.58 µs 266.87 µs 268.07 µs]
Found 17 outliers among 256 measurements (6.64%)
13 (5.08%) low severe
4 (1.56%) low mild
with smol; latency of 2-thread 512-sized pool/(control = simple lib)
time: [1.2091 ms 1.2128 ms 1.2164 ms]
with smol; latency of 2-thread 512-sized pool/futures
time: [1.2368 ms 1.2386 ms 1.2406 ms]
Found 8 outliers among 256 measurements (3.12%)
6 (2.34%) high mild
2 (0.78%) high severe
with smol; latency of 2-thread 512-sized pool/futures-buffered
time: [1.2342 ms 1.2353 ms 1.2364 ms]
Found 6 outliers among 256 measurements (2.34%)
5 (1.95%) high mild
1 (0.39%) high severe
with smol; latency of 2-thread 512-sized pool/slotpoller-stack
time: [1.2233 ms 1.2248 ms 1.2263 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) high mild
with smol; latency of 2-thread 512-sized pool/slotpoller-heap
time: [1.2260 ms 1.2272 ms 1.2284 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) high severe
with smol; latency of 2-thread 1024-sized pool/(control = longest sequence)
time: [276.61 µs 277.77 µs 278.85 µs]
Found 11 outliers among 256 measurements (4.30%)
11 (4.30%) low mild
with smol; latency of 2-thread 1024-sized pool/(control = simple lib)
time: [2.2341 ms 2.2374 ms 2.2407 ms]
Found 25 outliers among 256 measurements (9.77%)
24 (9.38%) low mild
1 (0.39%) high mild
with smol; latency of 2-thread 1024-sized pool/futures
time: [2.4784 ms 2.4830 ms 2.4878 ms]
Found 11 outliers among 256 measurements (4.30%)
11 (4.30%) high mild
with smol; latency of 2-thread 1024-sized pool/futures-buffered
time: [2.3754 ms 2.3785 ms 2.3816 ms]
with smol; latency of 2-thread 1024-sized pool/slotpoller-stack
time: [2.3833 ms 2.3861 ms 2.3890 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) high severe
with smol; latency of 2-thread 1024-sized pool/slotpoller-heap
time: [2.3766 ms 2.3800 ms 2.3834 ms]
Found 5 outliers among 256 measurements (1.95%)
5 (1.95%) high mild
with tokio; latency of 2-thread 32-sized pool/(control = longest sequence)
time: [13.840 ms 13.868 ms 13.895 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) low mild
with tokio; latency of 2-thread 32-sized pool/(control = simple lib)
time: [14.279 ms 14.292 ms 14.305 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low mild
with tokio; latency of 2-thread 32-sized pool/futures
time: [14.282 ms 14.294 ms 14.307 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low mild
with tokio; latency of 2-thread 32-sized pool/futures-buffered
time: [14.261 ms 14.274 ms 14.286 ms]
with tokio; latency of 2-thread 32-sized pool/slotpoller-stack
time: [14.251 ms 14.263 ms 14.275 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) low mild
with tokio; latency of 2-thread 32-sized pool/slotpoller-heap
time: [14.226 ms 14.237 ms 14.249 ms]
with tokio; latency of 2-thread 64-sized pool/(control = longest sequence)
time: [14.798 ms 14.819 ms 14.840 ms]
Found 7 outliers among 256 measurements (2.73%)
7 (2.73%) low mild
with tokio; latency of 2-thread 64-sized pool/(control = simple lib)
time: [15.284 ms 15.292 ms 15.300 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) high mild
with tokio; latency of 2-thread 64-sized pool/futures
time: [15.257 ms 15.267 ms 15.276 ms]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) low mild
with tokio; latency of 2-thread 64-sized pool/futures-buffered
time: [15.258 ms 15.267 ms 15.276 ms]
Found 3 outliers among 256 measurements (1.17%)
2 (0.78%) low mild
1 (0.39%) high mild
with tokio; latency of 2-thread 64-sized pool/slotpoller-stack
time: [15.254 ms 15.264 ms 15.274 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low mild
with tokio; latency of 2-thread 64-sized pool/slotpoller-heap
time: [15.253 ms 15.262 ms 15.272 ms]
Found 4 outliers among 256 measurements (1.56%)
1 (0.39%) low mild
3 (1.17%) high mild
with tokio; latency of 2-thread 128-sized pool/(control = longest sequence)
time: [14.500 ms 14.529 ms 14.557 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low mild
with tokio; latency of 2-thread 128-sized pool/(control = simple lib)
time: [16.098 ms 16.112 ms 16.125 ms]
Found 7 outliers among 256 measurements (2.73%)
4 (1.56%) low mild
3 (1.17%) high mild
with tokio; latency of 2-thread 128-sized pool/futures
time: [16.003 ms 16.019 ms 16.034 ms]
Found 12 outliers among 256 measurements (4.69%)
5 (1.95%) low severe
4 (1.56%) low mild
3 (1.17%) high mild
with tokio; latency of 2-thread 128-sized pool/futures-buffered
time: [15.977 ms 15.992 ms 16.006 ms]
Found 6 outliers among 256 measurements (2.34%)
1 (0.39%) low severe
5 (1.95%) low mild
with tokio; latency of 2-thread 128-sized pool/slotpoller-stack
time: [15.967 ms 15.985 ms 16.002 ms]
Found 13 outliers among 256 measurements (5.08%)
7 (2.73%) low severe
5 (1.95%) low mild
1 (0.39%) high mild
with tokio; latency of 2-thread 128-sized pool/slotpoller-heap
time: [15.931 ms 15.952 ms 15.972 ms]
Found 16 outliers among 256 measurements (6.25%)
8 (3.12%) low severe
8 (3.12%) low mild
with tokio; latency of 2-thread 256-sized pool/(control = longest sequence)
time: [15.011 ms 15.035 ms 15.059 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) low mild
with tokio; latency of 2-thread 256-sized pool/(control = simple lib)
time: [17.524 ms 17.535 ms 17.545 ms]
Found 5 outliers among 256 measurements (1.95%)
1 (0.39%) low severe
4 (1.56%) low mild
with tokio; latency of 2-thread 256-sized pool/futures
time: [17.451 ms 17.461 ms 17.472 ms]
Found 5 outliers among 256 measurements (1.95%)
1 (0.39%) low severe
3 (1.17%) low mild
1 (0.39%) high mild
with tokio; latency of 2-thread 256-sized pool/futures-buffered
time: [17.352 ms 17.363 ms 17.374 ms]
Found 6 outliers among 256 measurements (2.34%)
2 (0.78%) low severe
3 (1.17%) low mild
1 (0.39%) high mild
with tokio; latency of 2-thread 256-sized pool/slotpoller-stack
time: [17.333 ms 17.343 ms 17.354 ms]
Found 4 outliers among 256 measurements (1.56%)
1 (0.39%) low severe
3 (1.17%) low mild
with tokio; latency of 2-thread 256-sized pool/slotpoller-heap
time: [17.331 ms 17.341 ms 17.352 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) low mild
with tokio; latency of 2-thread 512-sized pool/(control = longest sequence)
time: [15.416 ms 15.445 ms 15.473 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low mild
with tokio; latency of 2-thread 512-sized pool/(control = simple lib)
time: [20.017 ms 20.046 ms 20.076 ms]
Found 5 outliers among 256 measurements (1.95%)
1 (0.39%) low mild
4 (1.56%) high mild
with tokio; latency of 2-thread 512-sized pool/futures
time: [20.725 ms 20.750 ms 20.774 ms]
with tokio; latency of 2-thread 512-sized pool/futures-buffered
time: [20.523 ms 20.548 ms 20.574 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) high mild
with tokio; latency of 2-thread 512-sized pool/slotpoller-stack
time: [20.469 ms 20.493 ms 20.517 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) high mild
with tokio; latency of 2-thread 512-sized pool/slotpoller-heap
time: [20.469 ms 20.493 ms 20.518 ms]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) high mild
with tokio; latency of 2-thread 1024-sized pool/(control = longest sequence)
time: [16.011 ms 16.040 ms 16.070 ms]
with tokio; latency of 2-thread 1024-sized pool/(control = simple lib)
time: [22.129 ms 22.159 ms 22.188 ms]
Found 13 outliers among 256 measurements (5.08%)
13 (5.08%) low mild
with tokio; latency of 2-thread 1024-sized pool/futures
time: [20.648 ms 20.686 ms 20.724 ms]
with tokio; latency of 2-thread 1024-sized pool/futures-buffered
time: [20.522 ms 20.566 ms 20.610 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low mild
with tokio; latency of 2-thread 1024-sized pool/slotpoller-stack
time: [20.474 ms 20.519 ms 20.563 ms]
with tokio; latency of 2-thread 1024-sized pool/slotpoller-heap
time: [20.391 ms 20.441 ms 20.491 ms]
```
### Latency - contended benchmark
Same as previous, except the level of parallelism is raised to `std::thread::available_parallelism()`. The main thread is used for the poller, and the async runtime can take advantage of `parallelism - 1` threads.
This generates a high level of contention. On my machine, parallelism = 12.
```
Running benches/latency_parallelized.rs (target/release/deps/latency_parallelized-c18c83b881c34436)
Gnuplot not found, using plotters backend
with smol; latency of parallelized 32-sized pool/(control = longest sequence)
time: [218.88 µs 220.42 µs 221.83 µs]
Found 25 outliers among 256 measurements (9.77%)
17 (6.64%) low severe
7 (2.73%) low mild
1 (0.39%) high mild
with smol; latency of parallelized 32-sized pool/(control = simple lib)
time: [272.53 µs 272.97 µs 273.38 µs]
with smol; latency of parallelized 32-sized pool/futures
time: [273.94 µs 274.24 µs 274.54 µs]
Found 8 outliers among 256 measurements (3.12%)
4 (1.56%) low mild
3 (1.17%) high mild
1 (0.39%) high severe
with smol; latency of parallelized 32-sized pool/futures-buffered
time: [271.70 µs 272.09 µs 272.52 µs]
Found 16 outliers among 256 measurements (6.25%)
2 (0.78%) low mild
1 (0.39%) high mild
13 (5.08%) high severe
with smol; latency of parallelized 32-sized pool/slotpoller-stack
time: [270.51 µs 270.82 µs 271.13 µs]
Found 10 outliers among 256 measurements (3.91%)
3 (1.17%) low mild
4 (1.56%) high mild
3 (1.17%) high severe
with smol; latency of parallelized 32-sized pool/slotpoller-heap
time: [270.74 µs 271.05 µs 271.36 µs]
Found 11 outliers among 256 measurements (4.30%)
4 (1.56%) low mild
7 (2.73%) high mild
with smol; latency of parallelized 64-sized pool/(control = longest sequence)
time: [229.86 µs 231.55 µs 233.08 µs]
Found 26 outliers among 256 measurements (10.16%)
26 (10.16%) low mild
with smol; latency of parallelized 64-sized pool/(control = simple lib)
time: [355.07 µs 355.82 µs 356.55 µs]
with smol; latency of parallelized 64-sized pool/futures
time: [354.79 µs 355.49 µs 356.19 µs]
Found 7 outliers among 256 measurements (2.73%)
4 (1.56%) low mild
3 (1.17%) high mild
with smol; latency of parallelized 64-sized pool/futures-buffered
time: [346.23 µs 346.99 µs 347.73 µs]
Found 4 outliers among 256 measurements (1.56%)
1 (0.39%) low mild
3 (1.17%) high mild
with smol; latency of parallelized 64-sized pool/slotpoller-stack
time: [344.11 µs 344.71 µs 345.32 µs]
Found 10 outliers among 256 measurements (3.91%)
2 (0.78%) low mild
8 (3.12%) high mild
with smol; latency of parallelized 64-sized pool/slotpoller-heap
time: [344.51 µs 345.20 µs 345.90 µs]
Found 4 outliers among 256 measurements (1.56%)
1 (0.39%) low mild
3 (1.17%) high mild
with smol; latency of parallelized 128-sized pool/(control = longest sequence)
time: [242.91 µs 244.16 µs 245.24 µs]
Found 16 outliers among 256 measurements (6.25%)
7 (2.73%) low severe
9 (3.52%) low mild
with smol; latency of parallelized 128-sized pool/(control = simple lib)
time: [565.10 µs 565.98 µs 566.72 µs]
with smol; latency of parallelized 128-sized pool/futures
time: [572.20 µs 572.41 µs 572.64 µs]
Found 17 outliers among 256 measurements (6.64%)
6 (2.34%) low severe
4 (1.56%) low mild
5 (1.95%) high mild
2 (0.78%) high severe
with smol; latency of parallelized 128-sized pool/futures-buffered
time: [561.51 µs 561.75 µs 561.99 µs]
Found 12 outliers among 256 measurements (4.69%)
3 (1.17%) low severe
6 (2.34%) low mild
1 (0.39%) high mild
2 (0.78%) high severe
with smol; latency of parallelized 128-sized pool/slotpoller-stack
time: [555.62 µs 555.85 µs 556.08 µs]
Found 9 outliers among 256 measurements (3.52%)
3 (1.17%) low severe
4 (1.56%) low mild
1 (0.39%) high mild
1 (0.39%) high severe
with smol; latency of parallelized 128-sized pool/slotpoller-heap
time: [554.54 µs 554.75 µs 554.96 µs]
Found 12 outliers among 256 measurements (4.69%)
1 (0.39%) low mild
9 (3.52%) high mild
2 (0.78%) high severe
with smol; latency of parallelized 256-sized pool/(control = longest sequence)
time: [252.76 µs 253.84 µs 254.86 µs]
Found 17 outliers among 256 measurements (6.64%)
8 (3.12%) low severe
9 (3.52%) low mild
with smol; latency of parallelized 256-sized pool/(control = simple lib)
time: [964.14 µs 968.78 µs 973.12 µs]
Found 37 outliers among 256 measurements (14.45%)
32 (12.50%) low severe
5 (1.95%) high mild
with smol; latency of parallelized 256-sized pool/futures
time: [1.2061 ms 1.2196 ms 1.2330 ms]
with smol; latency of parallelized 256-sized pool/futures-buffered
time: [1.0145 ms 1.0203 ms 1.0257 ms]
Found 103 outliers among 256 measurements (40.23%)
45 (17.58%) low severe
7 (2.73%) low mild
3 (1.17%) high mild
48 (18.75%) high severe
with smol; latency of parallelized 256-sized pool/slotpoller-stack
time: [1.0097 ms 1.0151 ms 1.0203 ms]
Found 108 outliers among 256 measurements (42.19%)
42 (16.41%) low severe
4 (1.56%) low mild
1 (0.39%) high mild
61 (23.83%) high severe
with smol; latency of parallelized 256-sized pool/slotpoller-heap
time: [1.0089 ms 1.0147 ms 1.0204 ms]
Found 95 outliers among 256 measurements (37.11%)
37 (14.45%) low severe
8 (3.12%) low mild
2 (0.78%) high mild
48 (18.75%) high severe
with smol; latency of parallelized 512-sized pool/(control = longest sequence)
time: [262.67 µs 263.90 µs 265.07 µs]
Found 16 outliers among 256 measurements (6.25%)
16 (6.25%) low mild
with smol; latency of parallelized 512-sized pool/(control = simple lib)
time: [1.7103 ms 1.7125 ms 1.7149 ms]
Found 26 outliers among 256 measurements (10.16%)
1 (0.39%) low severe
1 (0.39%) low mild
7 (2.73%) high mild
17 (6.64%) high severe
with smol; latency of parallelized 512-sized pool/futures
time: [1.9617 ms 1.9727 ms 1.9834 ms]
Found 28 outliers among 256 measurements (10.94%)
28 (10.94%) low mild
with smol; latency of parallelized 512-sized pool/futures-buffered
time: [1.8924 ms 1.8949 ms 1.8972 ms]
Found 9 outliers among 256 measurements (3.52%)
2 (0.78%) low severe
6 (2.34%) low mild
1 (0.39%) high severe
with smol; latency of parallelized 512-sized pool/slotpoller-stack
time: [1.8792 ms 1.8860 ms 1.8923 ms]
Found 49 outliers among 256 measurements (19.14%)
32 (12.50%) low severe
5 (1.95%) low mild
2 (0.78%) high mild
10 (3.91%) high severe
with smol; latency of parallelized 512-sized pool/slotpoller-heap
time: [1.8850 ms 1.8930 ms 1.9005 ms]
Found 60 outliers among 256 measurements (23.44%)
30 (11.72%) low severe
5 (1.95%) low mild
25 (9.77%) high severe
with smol; latency of parallelized 1024-sized pool/(control = longest sequence)
time: [273.77 µs 274.97 µs 276.08 µs]
Found 15 outliers among 256 measurements (5.86%)
6 (2.34%) low severe
9 (3.52%) low mild
with smol; latency of parallelized 1024-sized pool/(control = simple lib)
time: [3.1040 ms 3.1214 ms 3.1397 ms]
Found 44 outliers among 256 measurements (17.19%)
44 (17.19%) high severe
with smol; latency of parallelized 1024-sized pool/futures
time: [4.7582 ms 4.7614 ms 4.7648 ms]
Found 10 outliers among 256 measurements (3.91%)
3 (1.17%) low mild
4 (1.56%) high mild
3 (1.17%) high severe
with smol; latency of parallelized 1024-sized pool/futures-buffered
time: [3.5390 ms 3.5593 ms 3.5781 ms]
Found 55 outliers among 256 measurements (21.48%)
53 (20.70%) low severe
1 (0.39%) low mild
1 (0.39%) high severe
with smol; latency of parallelized 1024-sized pool/slotpoller-stack
time: [3.6421 ms 3.6444 ms 3.6467 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) high mild
with smol; latency of parallelized 1024-sized pool/slotpoller-heap
time: [3.6339 ms 3.6372 ms 3.6399 ms]
Found 3 outliers among 256 measurements (1.17%)
1 (0.39%) low severe
1 (0.39%) low mild
1 (0.39%) high mild
with tokio; latency of parallelized 32-sized pool/(control = longest sequence)
time: [13.799 ms 13.815 ms 13.831 ms]
Found 3 outliers among 256 measurements (1.17%)
2 (0.78%) low mild
1 (0.39%) high mild
with tokio; latency of parallelized 32-sized pool/(control = simple lib)
time: [14.235 ms 14.248 ms 14.261 ms]
with tokio; latency of parallelized 32-sized pool/futures
time: [14.201 ms 14.213 ms 14.225 ms]
with tokio; latency of parallelized 32-sized pool/futures-buffered
time: [14.186 ms 14.198 ms 14.211 ms]
with tokio; latency of parallelized 32-sized pool/slotpoller-stack
time: [14.194 ms 14.206 ms 14.219 ms]
with tokio; latency of parallelized 32-sized pool/slotpoller-heap
time: [14.197 ms 14.209 ms 14.221 ms]
with tokio; latency of parallelized 64-sized pool/(control = longest sequence)
time: [14.609 ms 14.631 ms 14.652 ms]
Found 7 outliers among 256 measurements (2.73%)
7 (2.73%) low mild
with tokio; latency of parallelized 64-sized pool/(control = simple lib)
time: [15.312 ms 15.327 ms 15.343 ms]
with tokio; latency of parallelized 64-sized pool/futures
time: [15.290 ms 15.305 ms 15.321 ms]
with tokio; latency of parallelized 64-sized pool/futures-buffered
time: [15.286 ms 15.301 ms 15.315 ms]
with tokio; latency of parallelized 64-sized pool/slotpoller-stack
time: [15.281 ms 15.296 ms 15.311 ms]
with tokio; latency of parallelized 64-sized pool/slotpoller-heap
time: [15.242 ms 15.270 ms 15.294 ms]
Found 4 outliers among 256 measurements (1.56%)
4 (1.56%) low severe
with tokio; latency of parallelized 128-sized pool/(control = longest sequence)
time: [15.170 ms 15.193 ms 15.215 ms]
Found 5 outliers among 256 measurements (1.95%)
5 (1.95%) low mild
with tokio; latency of parallelized 128-sized pool/(control = simple lib)
time: [16.608 ms 16.623 ms 16.639 ms]
with tokio; latency of parallelized 128-sized pool/futures
time: [16.486 ms 16.502 ms 16.519 ms]
with tokio; latency of parallelized 128-sized pool/futures-buffered
time: [16.438 ms 16.455 ms 16.472 ms]
with tokio; latency of parallelized 128-sized pool/slotpoller-stack
time: [16.402 ms 16.417 ms 16.433 ms]
with tokio; latency of parallelized 128-sized pool/slotpoller-heap
time: [16.389 ms 16.406 ms 16.422 ms]
with tokio; latency of parallelized 256-sized pool/(control = longest sequence)
time: [15.797 ms 15.813 ms 15.827 ms]
Found 2 outliers among 256 measurements (0.78%)
1 (0.39%) low severe
1 (0.39%) high mild
with tokio; latency of parallelized 256-sized pool/(control = simple lib)
time: [16.823 ms 16.833 ms 16.844 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low severe
with tokio; latency of parallelized 256-sized pool/futures
time: [16.800 ms 16.809 ms 16.818 ms]
Found 3 outliers among 256 measurements (1.17%)
2 (0.78%) low mild
1 (0.39%) high mild
with tokio; latency of parallelized 256-sized pool/futures-buffered
time: [16.742 ms 16.751 ms 16.759 ms]
Found 4 outliers among 256 measurements (1.56%)
2 (0.78%) low mild
2 (0.78%) high mild
with tokio; latency of parallelized 256-sized pool/slotpoller-stack
time: [16.735 ms 16.744 ms 16.752 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) low mild
with tokio; latency of parallelized 256-sized pool/slotpoller-heap
time: [16.718 ms 16.727 ms 16.735 ms]
Found 4 outliers among 256 measurements (1.56%)
1 (0.39%) low severe
3 (1.17%) low mild
with tokio; latency of parallelized 512-sized pool/(control = longest sequence)
time: [16.342 ms 16.358 ms 16.373 ms]
Found 7 outliers among 256 measurements (2.73%)
1 (0.39%) low severe
6 (2.34%) low mild
with tokio; latency of parallelized 512-sized pool/(control = simple lib)
time: [18.850 ms 18.863 ms 18.876 ms]
Found 3 outliers among 256 measurements (1.17%)
2 (0.78%) low mild
1 (0.39%) high mild
with tokio; latency of parallelized 512-sized pool/futures
time: [18.591 ms 18.602 ms 18.613 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) high mild
with tokio; latency of parallelized 512-sized pool/futures-buffered
time: [18.476 ms 18.486 ms 18.496 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) low mild
with tokio; latency of parallelized 512-sized pool/slotpoller-stack
time: [18.444 ms 18.453 ms 18.463 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) low mild
with tokio; latency of parallelized 512-sized pool/slotpoller-heap
time: [18.461 ms 18.513 ms 18.608 ms]
Found 1 outliers among 256 measurements (0.39%)
1 (0.39%) high severe
with tokio; latency of parallelized 1024-sized pool/(control = longest sequence)
time: [16.792 ms 16.808 ms 16.823 ms]
Found 8 outliers among 256 measurements (3.12%)
8 (3.12%) low mild
with tokio; latency of parallelized 1024-sized pool/(control = simple lib)
time: [20.600 ms 20.626 ms 20.651 ms]
with tokio; latency of parallelized 1024-sized pool/futures
time: [24.882 ms 24.896 ms 24.910 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) high mild
with tokio; latency of parallelized 1024-sized pool/futures-buffered
time: [25.015 ms 25.029 ms 25.042 ms]
with tokio; latency of parallelized 1024-sized pool/slotpoller-stack
time: [25.373 ms 25.388 ms 25.402 ms]
Found 2 outliers among 256 measurements (0.78%)
2 (0.78%) high mild
with tokio; latency of parallelized 1024-sized pool/slotpoller-heap
time: [25.229 ms 25.243 ms 25.259 ms]
Found 3 outliers among 256 measurements (1.17%)
3 (1.17%) high mild
```
## Memory
These benchmarks measure the memory usage of creating the poller with 16 slots, filling it with 128 futures, and polling the futures to completion. Like with the latency benchmark, each future sleeps for a sequence of random durations.
The whole process, from start to finish, is measured for memory impact. We wrap the system allocator and record the following statistics.
### Total Allocation
How many total bytes were requested from the allocator. This is the sum of allocation sizes from alloc() calls.
```
Running benches/memory.rs (target/release/deps/memory-772d41016e204864)
Gnuplot not found, using plotters backend
with smol; total alloc/(control = simple lib)
time: [279.02 KiB 279.63 KiB 280.15 KiB]
Found 2 outliers among 14 measurements (14.29%)
1 (7.14%) low severe
1 (7.14%) low mild
with smol; total alloc/futures
time: [115.76 KiB 115.83 KiB 115.89 KiB]
with smol; total alloc/futures-buffered
time: [241.43 KiB 241.68 KiB 241.91 KiB]
Found 2 outliers among 14 measurements (14.29%)
2 (14.29%) low mild
with smol; total alloc/slotpoller-stack
time: [240.83 KiB 241.00 KiB 241.18 KiB]
with smol; total alloc/slotpoller-heap
time: [241.08 KiB 241.79 KiB 242.35 KiB]
Found 1 outliers among 14 measurements (7.14%)
1 (7.14%) low severe
with tokio; total alloc/(control = simple lib)
time: [54.117 KiB 54.117 KiB 54.117 KiB]
with tokio; total alloc/futures
time: [32.313 KiB 32.313 KiB 32.313 KiB]
with tokio; total alloc/futures-buffered
time: [4.1250 KiB 4.1250 KiB 4.1250 KiB]
with tokio; total alloc/slotpoller-stack
time: [512.00 b 512.00 b 512.00 b]
with tokio; total alloc/slotpoller-heap
time: [3.6250 KiB 3.6250 KiB 3.6250 KiB]
```
### Maximum Memory Usage
This is the maximum memory usage that was reached at any given time. The program's memory usage goes up and down, and this was the highest recorded value.
Note that because allocations happen concurrently, they can sometimes cross over between measurement runs, but we mitigate this by having the benchmark sleep for a couple milliseconds before exiting.
```
with smol; max memory usage/(control = simple lib)
time: [39.687 b 39.706 b 39.725 b]
with smol; max memory usage/futures
time: [413.55 b 414.12 b 414.70 b]
with smol; max memory usage/futures-buffered
time: [66.362 b 66.362 b 66.362 b]
Found 1 outliers among 14 measurements (7.14%)
1 (7.14%) low mild
with smol; max memory usage/slotpoller-stack
time: [34.338 b 34.338 b 34.338 b]
with smol; max memory usage/slotpoller-heap
time: [60.782 b 60.782 b 60.782 b]
with tokio; max memory usage/(control = simple lib)
time: [73.070 b 73.071 b 73.071 b]
with tokio; max memory usage/futures
time: [766.07 b 766.07 b 766.07 b]
with tokio; max memory usage/futures-buffered
time: [330.00 b 330.00 b 330.00 b]
with tokio; max memory usage/slotpoller-stack
time: [40.315 b 40.315 b 40.315 b]
with tokio; max memory usage/slotpoller-heap
time: [287.75 b 287.75 b 287.75 b]
```
## zetanumber's benchmarks
I also incorporated benchmarks from zetanumber's "interdependent futures" functions. They are forked from [zetanumbers/futures-concurrency-benchmark](https://github.com/zetanumbers/futures-concurrency-benchmark), itself forked from notgull.
Some changes were made, and these are described in benches/zetanumbers_interdependent.rs
### Polling methods under test
* `futures_concurrency::join`
* `futures_concurrency::FutureGroup`
* `slotpoller::StackSlots`
* `slotpoller::HeapSlots`
* `futures_util::future::JoinAll` (futures)
* `futures_util::stream::FuturesOrdered` (futures)
* `futures_util::stream::FuturesUnordered` (futures)
* `async_executor::LocalExecutor` (smol)
* `async_executor::Executor` (smol)
* `unsend::executor::Executor`
* `tokio::task::LocalSet::spawn_local`
* `tokio::task::JoinSet::spawn_local_on`
* `tokio::task::spawn`
* `tokio::task::JoinSet::spawn`
Note that *futures_util* is the same as the popular *futures* crate, and similarly with *async_executor*/*smol*.
Most benchmarks were executed with the smol runtime. However, Tokio utilities were benchmarked using the Tokio runtime to poll them.
### Summary
In almost every case, SlotPoller was the best. It is objectively the most performant library according to this benchmark.
The results below are broken up into the following sections:
* Ready and yield tasks. These are probably uninteresting, but provide a baseline for comparison.
* X interdependent tasks. Scroll down to see this part.
### Ready and yield tasks
Rather straightforward benchmarks which test A.) ready futures and B.) futures that call yield_now().await.
```
Running benches/zetanumbers_interdependent.rs (target/release/deps/zetanumbers_interdependent-5573edd67e124ce7)
Gnuplot not found, using plotters backend
ready_task/seq time: [8.2213 µs 8.2220 µs 8.2229 µs]
thrpt: [1.9925 Gelem/s 1.9927 Gelem/s 1.9929 Gelem/s]
Found 12 outliers among 100 measurements (12.00%)
5 (5.00%) high mild
7 (7.00%) high severe
ready_task/futures_concurrency::join
time: [1.2669 ms 1.2701 ms 1.2732 ms]
thrpt: [12.868 Melem/s 12.900 Melem/s 12.933 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
ready_task/futures_concurrency::FutureGroup
time: [3.1946 ms 3.2037 ms 3.2139 ms]
thrpt: [5.0979 Melem/s 5.1141 Melem/s 5.1287 Melem/s]
ready_task/slotpoller::StackSlots
time: [427.50 µs 427.68 µs 427.90 µs]
thrpt: [38.289 Melem/s 38.309 Melem/s 38.325 Melem/s]
Found 19 outliers among 100 measurements (19.00%)
19 (19.00%) high severe
ready_task/slotpoller::HeapSlots
time: [420.28 µs 420.33 µs 420.39 µs]
thrpt: [38.973 Melem/s 38.979 Melem/s 38.984 Melem/s]
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) high severe
ready_task/futures_util::future::JoinAll
time: [1.7697 ms 1.7740 ms 1.7779 ms]
thrpt: [9.2155 Melem/s 9.2354 Melem/s 9.2580 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
ready_task/futures_util::stream::FuturesOrdered
time: [1.5960 ms 1.5983 ms 1.6003 ms]
thrpt: [10.238 Melem/s 10.251 Melem/s 10.266 Melem/s]
Found 15 outliers among 100 measurements (15.00%)
9 (9.00%) low severe
5 (5.00%) low mild
1 (1.00%) high severe
ready_task/futures_util::stream::FuturesUnordered
time: [1.5489 ms 1.5515 ms 1.5540 ms]
thrpt: [10.543 Melem/s 10.560 Melem/s 10.578 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
ready_task/async_executor::LocalExecutor
time: [3.7557 ms 3.7573 ms 3.7590 ms]
thrpt: [4.3586 Melem/s 4.3605 Melem/s 4.3624 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
ready_task/unsend::executor::Executor
time: [2.6952 ms 2.6998 ms 2.7035 ms]
thrpt: [6.0604 Melem/s 6.0687 Melem/s 6.0789 Melem/s]
Found 22 outliers among 100 measurements (22.00%)
5 (5.00%) low severe
17 (17.00%) high severe
ready_task/tokio::task::LocalSet::spawn_local/current-thread
time: [4.7109 ms 4.7189 ms 4.7282 ms]
thrpt: [3.4651 Melem/s 3.4720 Melem/s 3.4779 Melem/s]
Found 13 outliers among 100 measurements (13.00%)
1 (1.00%) high mild
12 (12.00%) high severe
Benchmarking ready_task/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 38.6s, enable flat sampling, or reduce sample count to 60.
ready_task/tokio::task::JoinSet::spawn_local_on/current-thread
time: [7.6316 ms 7.6342 ms 7.6366 ms]
thrpt: [2.1455 Melem/s 2.1461 Melem/s 2.1469 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) high mild
3 (3.00%) high severe
ready_task/tokio::task::LocalSet::spawn_local/multi-thread
time: [4.7138 ms 4.7154 ms 4.7171 ms]
thrpt: [3.4734 Melem/s 3.4745 Melem/s 3.4757 Melem/s]
Found 8 outliers among 100 measurements (8.00%)
4 (4.00%) high mild
4 (4.00%) high severe
Benchmarking ready_task/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 36.9s, enable flat sampling, or reduce sample count to 60.
ready_task/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [7.3743 ms 7.4202 ms 7.4676 ms]
thrpt: [2.1940 Melem/s 2.2080 Melem/s 2.2218 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
ready_task/async_executor::Executor
time: [3.7748 ms 3.7763 ms 3.7778 ms]
thrpt: [4.3369 Melem/s 4.3387 Melem/s 4.3404 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
ready_task/tokio::task::spawn/current-thread
time: [4.5965 ms 4.5983 ms 4.6000 ms]
thrpt: [3.5617 Melem/s 3.5630 Melem/s 3.5645 Melem/s]
Found 12 outliers among 100 measurements (12.00%)
3 (3.00%) low mild
5 (5.00%) high mild
4 (4.00%) high severe
Benchmarking ready_task/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 36.9s, enable flat sampling, or reduce sample count to 60.
ready_task/tokio::task::JoinSet::spawn/current-thread
time: [7.3416 ms 7.3555 ms 7.3692 ms]
thrpt: [2.2233 Melem/s 2.2274 Melem/s 2.2317 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking ready_task/tokio::task::spawn/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 48.1s, enable flat sampling, or reduce sample count to 50.
ready_task/tokio::task::spawn/multi-thread
time: [10.979 ms 11.061 ms 11.140 ms]
thrpt: [1.4707 Melem/s 1.4813 Melem/s 1.4923 Melem/s]
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) low mild
ready_task/tokio::task::JoinSet::spawn/multi-thread
time: [14.196 ms 14.269 ms 14.346 ms]
thrpt: [1.1421 Melem/s 1.1483 Melem/s 1.1542 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) low mild
2 (2.00%) high mild
2 (2.00%) high severe
yield_once_task/seq time: [366.71 µs 368.99 µs 371.61 µs]
thrpt: [44.089 Melem/s 44.402 Melem/s 44.679 Melem/s]
yield_once_task/futures_concurrency::join
time: [2.0085 ms 2.0088 ms 2.0091 ms]
thrpt: [8.1550 Melem/s 8.1562 Melem/s 8.1575 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
4 (4.00%) high severe
yield_once_task/futures_concurrency::FutureGroup
time: [4.0800 ms 4.0823 ms 4.0849 ms]
thrpt: [4.0108 Melem/s 4.0134 Melem/s 4.0157 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
yield_once_task/slotpoller::StackSlots
time: [825.54 µs 826.71 µs 828.07 µs]
thrpt: [19.786 Melem/s 19.818 Melem/s 19.846 Melem/s]
yield_once_task/slotpoller::HeapSlots
time: [817.72 µs 817.87 µs 818.05 µs]
thrpt: [20.028 Melem/s 20.033 Melem/s 20.036 Melem/s]
Found 12 outliers among 100 measurements (12.00%)
3 (3.00%) high mild
9 (9.00%) high severe
yield_once_task/futures_util::future::JoinAll
time: [3.0948 ms 3.0964 ms 3.0976 ms]
thrpt: [5.2892 Melem/s 5.2914 Melem/s 5.2941 Melem/s]
Found 13 outliers among 100 measurements (13.00%)
10 (10.00%) high mild
3 (3.00%) high severe
yield_once_task/futures_util::stream::FuturesOrdered
time: [2.9077 ms 2.9097 ms 2.9126 ms]
thrpt: [5.6252 Melem/s 5.6308 Melem/s 5.6346 Melem/s]
Found 17 outliers among 100 measurements (17.00%)
9 (9.00%) low severe
5 (5.00%) low mild
1 (1.00%) high mild
2 (2.00%) high severe
yield_once_task/futures_util::stream::FuturesUnordered
time: [2.7852 ms 2.7892 ms 2.7932 ms]
thrpt: [5.8658 Melem/s 5.8741 Melem/s 5.8826 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
yield_once_task/async_executor::LocalExecutor
time: [5.5486 ms 5.5514 ms 5.5540 ms]
thrpt: [2.9499 Melem/s 2.9513 Melem/s 2.9528 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
yield_once_task/unsend::executor::Executor
time: [3.6658 ms 3.6670 ms 3.6680 ms]
thrpt: [4.4668 Melem/s 4.4680 Melem/s 4.4694 Melem/s]
Found 6 outliers among 100 measurements (6.00%)
2 (2.00%) low mild
1 (1.00%) high mild
3 (3.00%) high severe
yield_once_task/tokio::task::LocalSet::spawn_local/current-thread
time: [5.3901 ms 5.3927 ms 5.3958 ms]
thrpt: [3.0364 Melem/s 3.0382 Melem/s 3.0396 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
Benchmarking yield_once_task/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 42.0s, enable flat sampling, or reduce sample count to 50.
yield_once_task/tokio::task::JoinSet::spawn_local_on/current-thread
time: [8.2992 ms 8.3040 ms 8.3106 ms]
thrpt: [1.9715 Melem/s 1.9730 Melem/s 1.9742 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
4 (4.00%) high severe
yield_once_task/tokio::task::LocalSet::spawn_local/multi-thread
time: [5.3592 ms 5.3626 ms 5.3667 ms]
thrpt: [3.0529 Melem/s 3.0552 Melem/s 3.0572 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking yield_once_task/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 42.0s, enable flat sampling, or reduce sample count to 50.
yield_once_task/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [8.2569 ms 8.2692 ms 8.2798 ms]
thrpt: [1.9788 Melem/s 1.9813 Melem/s 1.9843 Melem/s]
Found 15 outliers among 100 measurements (15.00%)
6 (6.00%) low severe
6 (6.00%) low mild
3 (3.00%) high severe
yield_once_task/async_executor::Executor
time: [5.5512 ms 5.5569 ms 5.5630 ms]
thrpt: [2.9452 Melem/s 2.9484 Melem/s 2.9514 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
yield_once_task/tokio::task::spawn/current-thread
time: [5.2438 ms 5.2510 ms 5.2580 ms]
thrpt: [3.1160 Melem/s 3.1202 Melem/s 3.1245 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking yield_once_task/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 40.7s, enable flat sampling, or reduce sample count to 60.
yield_once_task/tokio::task::JoinSet::spawn/current-thread
time: [7.9787 ms 7.9901 ms 8.0023 ms]
thrpt: [2.0474 Melem/s 2.0505 Melem/s 2.0535 Melem/s]
Found 9 outliers among 100 measurements (9.00%)
4 (4.00%) low mild
3 (3.00%) high mild
2 (2.00%) high severe
Benchmarking yield_once_task/tokio::task::spawn/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 54.2s, enable flat sampling, or reduce sample count to 50.
yield_once_task/tokio::task::spawn/multi-thread
time: [12.059 ms 12.139 ms 12.210 ms]
thrpt: [1.3418 Melem/s 1.3497 Melem/s 1.3586 Melem/s]
Found 6 outliers among 100 measurements (6.00%)
4 (4.00%) low mild
2 (2.00%) high mild
yield_once_task/tokio::task::JoinSet::spawn/multi-thread
time: [15.824 ms 15.884 ms 15.945 ms]
thrpt: [1.0275 Melem/s 1.0315 Melem/s 1.0354 Melem/s]
yield_ten_task/seq time: [3.5574 ms 3.5758 ms 3.5973 ms]
thrpt: [4.5545 Melem/s 4.5820 Melem/s 4.6056 Melem/s]
Benchmarking yield_ten_task/futures_concurrency::join: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 43.5s, enable flat sampling, or reduce sample count to 50.
yield_ten_task/futures_concurrency::join
time: [8.6022 ms 8.6030 ms 8.6038 ms]
thrpt: [1.9043 Melem/s 1.9045 Melem/s 1.9046 Melem/s]
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) high mild
5 (5.00%) high severe
Benchmarking yield_ten_task/futures_concurrency::FutureGroup: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 57.0s, enable flat sampling, or reduce sample count to 50.
yield_ten_task/futures_concurrency::FutureGroup
time: [11.264 ms 11.268 ms 11.272 ms]
thrpt: [1.4535 Melem/s 1.4540 Melem/s 1.4545 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
yield_ten_task/slotpoller::StackSlots
time: [4.3781 ms 4.3789 ms 4.3797 ms]
thrpt: [3.7409 Melem/s 3.7416 Melem/s 3.7422 Melem/s]
Found 13 outliers among 100 measurements (13.00%)
6 (6.00%) high mild
7 (7.00%) high severe
yield_ten_task/slotpoller::HeapSlots
time: [4.3202 ms 4.3209 ms 4.3218 ms]
thrpt: [3.7910 Melem/s 3.7918 Melem/s 3.7924 Melem/s]
Found 12 outliers among 100 measurements (12.00%)
5 (5.00%) high mild
7 (7.00%) high severe
yield_ten_task/futures_util::future::JoinAll
time: [14.423 ms 14.439 ms 14.457 ms]
thrpt: [1.1333 Melem/s 1.1347 Melem/s 1.1360 Melem/s]
Found 14 outliers among 100 measurements (14.00%)
1 (1.00%) high mild
13 (13.00%) high severe
yield_ten_task/futures_util::stream::FuturesOrdered
time: [14.264 ms 14.284 ms 14.302 ms]
thrpt: [1.1455 Melem/s 1.1470 Melem/s 1.1486 Melem/s]
yield_ten_task/futures_util::stream::FuturesUnordered
time: [13.813 ms 13.841 ms 13.869 ms]
thrpt: [1.1813 Melem/s 1.1838 Melem/s 1.1861 Melem/s]
Found 31 outliers among 100 measurements (31.00%)
13 (13.00%) low severe
1 (1.00%) low mild
1 (1.00%) high mild
16 (16.00%) high severe
yield_ten_task/async_executor::LocalExecutor
time: [21.918 ms 21.926 ms 21.937 ms]
thrpt: [746.87 Kelem/s 747.25 Kelem/s 747.50 Kelem/s]
Found 15 outliers among 100 measurements (15.00%)
13 (13.00%) high mild
2 (2.00%) high severe
yield_ten_task/unsend::executor::Executor
time: [12.319 ms 12.321 ms 12.324 ms]
thrpt: [1.3294 Melem/s 1.3297 Melem/s 1.3300 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
Benchmarking yield_ten_task/tokio::task::LocalSet::spawn_local/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 56.9s, enable flat sampling, or reduce sample count to 50.
yield_ten_task/tokio::task::LocalSet::spawn_local/current-thread
time: [11.280 ms 11.284 ms 11.290 ms]
thrpt: [1.4512 Melem/s 1.4519 Melem/s 1.4525 Melem/s]
Found 21 outliers among 100 measurements (21.00%)
3 (3.00%) low mild
12 (12.00%) high mild
6 (6.00%) high severe
yield_ten_task/tokio::task::JoinSet::spawn_local_on/current-thread
time: [14.229 ms 14.236 ms 14.244 ms]
thrpt: [1.1502 Melem/s 1.1509 Melem/s 1.1514 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
4 (4.00%) high mild
1 (1.00%) high severe
Benchmarking yield_ten_task/tokio::task::LocalSet::spawn_local/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 56.2s, enable flat sampling, or reduce sample count to 50.
yield_ten_task/tokio::task::LocalSet::spawn_local/multi-thread
time: [11.144 ms 11.152 ms 11.162 ms]
thrpt: [1.4678 Melem/s 1.4691 Melem/s 1.4702 Melem/s]
Found 16 outliers among 100 measurements (16.00%)
2 (2.00%) high mild
14 (14.00%) high severe
yield_ten_task/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [13.991 ms 14.022 ms 14.053 ms]
thrpt: [1.1659 Melem/s 1.1684 Melem/s 1.1711 Melem/s]
yield_ten_task/async_executor::Executor
time: [22.026 ms 22.049 ms 22.074 ms]
thrpt: [742.24 Kelem/s 743.08 Kelem/s 743.84 Kelem/s]
Found 27 outliers among 100 measurements (27.00%)
12 (12.00%) low mild
5 (5.00%) high mild
10 (10.00%) high severe
Benchmarking yield_ten_task/tokio::task::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 56.9s, enable flat sampling, or reduce sample count to 50.
yield_ten_task/tokio::task::spawn/current-thread
time: [11.243 ms 11.246 ms 11.249 ms]
thrpt: [1.4565 Melem/s 1.4569 Melem/s 1.4572 Melem/s]
Found 10 outliers among 100 measurements (10.00%)
1 (1.00%) low mild
4 (4.00%) high mild
5 (5.00%) high severe
yield_ten_task/tokio::task::JoinSet::spawn/current-thread
time: [13.900 ms 13.915 ms 13.932 ms]
thrpt: [1.1760 Melem/s 1.1774 Melem/s 1.1787 Melem/s]
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) high mild
yield_ten_task/tokio::task::spawn/multi-thread
time: [18.969 ms 19.090 ms 19.206 ms]
thrpt: [853.09 Kelem/s 858.24 Kelem/s 863.75 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) low mild
yield_ten_task/tokio::task::JoinSet::spawn/multi-thread
time: [22.725 ms 22.825 ms 22.922 ms]
thrpt: [714.78 Kelem/s 717.82 Kelem/s 720.96 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild
yield_hundred_task/seq time: [35.946 ms 36.113 ms 36.275 ms]
thrpt: [451.66 Kelem/s 453.69 Kelem/s 455.80 Kelem/s]
yield_hundred_task/futures_concurrency::join
time: [75.418 ms 75.458 ms 75.519 ms]
thrpt: [216.95 Kelem/s 217.13 Kelem/s 217.24 Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
2 (2.00%) high mild
7 (7.00%) high severe
yield_hundred_task/futures_concurrency::FutureGroup
time: [82.909 ms 83.149 ms 83.423 ms]
thrpt: [196.40 Kelem/s 197.04 Kelem/s 197.61 Kelem/s]
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) high severe
yield_hundred_task/slotpoller::StackSlots
time: [39.306 ms 39.320 ms 39.337 ms]
thrpt: [416.51 Kelem/s 416.68 Kelem/s 416.83 Kelem/s]
Found 15 outliers among 100 measurements (15.00%)
15 (15.00%) high severe
yield_hundred_task/slotpoller::HeapSlots
time: [38.864 ms 38.869 ms 38.875 ms]
thrpt: [421.45 Kelem/s 421.52 Kelem/s 421.58 Kelem/s]
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) high severe
yield_hundred_task/futures_util::future::JoinAll
time: [125.84 ms 125.91 ms 125.97 ms]
thrpt: [130.06 Kelem/s 130.13 Kelem/s 130.19 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) low mild
yield_hundred_task/futures_util::stream::FuturesOrdered
time: [124.58 ms 124.76 ms 124.95 ms]
thrpt: [131.12 Kelem/s 131.32 Kelem/s 131.52 Kelem/s]
yield_hundred_task/futures_util::stream::FuturesUnordered
time: [125.02 ms 125.36 ms 125.73 ms]
thrpt: [130.31 Kelem/s 130.69 Kelem/s 131.05 Kelem/s]
Found 16 outliers among 100 measurements (16.00%)
16 (16.00%) high severe
yield_hundred_task/async_executor::LocalExecutor
time: [188.18 ms 188.95 ms 189.75 ms]
thrpt: [86.347 Kelem/s 86.712 Kelem/s 87.066 Kelem/s]
yield_hundred_task/unsend::executor::Executor
time: [99.307 ms 99.324 ms 99.344 ms]
thrpt: [164.92 Kelem/s 164.95 Kelem/s 164.98 Kelem/s]
Found 6 outliers among 100 measurements (6.00%)
4 (4.00%) high mild
2 (2.00%) high severe
yield_hundred_task/tokio::task::LocalSet::spawn_local/current-thread
time: [70.215 ms 70.252 ms 70.291 ms]
thrpt: [233.09 Kelem/s 233.22 Kelem/s 233.34 Kelem/s]
Found 17 outliers among 100 measurements (17.00%)
15 (15.00%) high mild
2 (2.00%) high severe
yield_hundred_task/tokio::task::JoinSet::spawn_local_on/current-thread
time: [73.163 ms 73.191 ms 73.222 ms]
thrpt: [223.76 Kelem/s 223.85 Kelem/s 223.94 Kelem/s]
Found 12 outliers among 100 measurements (12.00%)
8 (8.00%) low mild
1 (1.00%) high mild
3 (3.00%) high severe
yield_hundred_task/tokio::task::LocalSet::spawn_local/multi-thread
time: [68.994 ms 69.063 ms 69.140 ms]
thrpt: [236.97 Kelem/s 237.23 Kelem/s 237.47 Kelem/s]
Found 7 outliers among 100 measurements (7.00%)
3 (3.00%) high mild
4 (4.00%) high severe
yield_hundred_task/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [72.139 ms 72.213 ms 72.298 ms]
thrpt: [226.62 Kelem/s 226.89 Kelem/s 227.12 Kelem/s]
Found 8 outliers among 100 measurements (8.00%)
1 (1.00%) low mild
2 (2.00%) high mild
5 (5.00%) high severe
yield_hundred_task/async_executor::Executor
time: [189.62 ms 189.88 ms 190.16 ms]
thrpt: [86.159 Kelem/s 86.286 Kelem/s 86.405 Kelem/s]
Found 20 outliers among 100 measurements (20.00%)
17 (17.00%) high mild
3 (3.00%) high severe
yield_hundred_task/tokio::task::spawn/current-thread
time: [70.420 ms 70.464 ms 70.510 ms]
thrpt: [232.36 Kelem/s 232.51 Kelem/s 232.66 Kelem/s]
yield_hundred_task/tokio::task::JoinSet::spawn/current-thread
time: [73.090 ms 73.130 ms 73.175 ms]
thrpt: [223.90 Kelem/s 224.04 Kelem/s 224.16 Kelem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) high mild
3 (3.00%) high severe
yield_hundred_task/tokio::task::spawn/multi-thread
time: [35.620 ms 35.915 ms 36.216 ms]
thrpt: [452.39 Kelem/s 456.19 Kelem/s 459.96 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
yield_hundred_task/tokio::task::JoinSet::spawn/multi-thread
time: [36.624 ms 36.827 ms 37.034 ms]
thrpt: [442.41 Kelem/s 444.89 Kelem/s 447.36 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
independent_yield_rand_uniform_tasks/seq
time: [19.622 ms 19.623 ms 19.626 ms]
thrpt: [834.82 Kelem/s 834.92 Kelem/s 835.00 Kelem/s]
Found 6 outliers among 100 measurements (6.00%)
3 (3.00%) high mild
3 (3.00%) high severe
independent_yield_rand_uniform_tasks/futures_concurrency::join
time: [39.080 ms 39.216 ms 39.358 ms]
thrpt: [416.29 Kelem/s 417.79 Kelem/s 419.25 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
independent_yield_rand_uniform_tasks/futures_concurrency::FutureGroup
time: [45.045 ms 45.108 ms 45.167 ms]
thrpt: [362.74 Kelem/s 363.22 Kelem/s 363.73 Kelem/s]
Found 16 outliers among 100 measurements (16.00%)
16 (16.00%) low severe
independent_yield_rand_uniform_tasks/slotpoller::StackSlots
time: [19.902 ms 19.905 ms 19.909 ms]
thrpt: [822.95 Kelem/s 823.11 Kelem/s 823.25 Kelem/s]
Found 8 outliers among 100 measurements (8.00%)
8 (8.00%) high severe
independent_yield_rand_uniform_tasks/slotpoller::HeapSlots
time: [19.947 ms 19.956 ms 19.967 ms]
thrpt: [820.57 Kelem/s 821.00 Kelem/s 821.36 Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
2 (2.00%) high mild
11 (11.00%) high severe
independent_yield_rand_uniform_tasks/futures_util::future::JoinAll
time: [65.465 ms 65.515 ms 65.577 ms]
thrpt: [249.84 Kelem/s 250.08 Kelem/s 250.27 Kelem/s]
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) high severe
independent_yield_rand_uniform_tasks/futures_util::stream::FuturesOrdered
time: [65.776 ms 65.895 ms 66.023 ms]
thrpt: [248.16 Kelem/s 248.64 Kelem/s 249.09 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
independent_yield_rand_uniform_tasks/futures_util::stream::FuturesUnordered
time: [62.789 ms 62.799 ms 62.810 ms]
thrpt: [260.85 Kelem/s 260.90 Kelem/s 260.94 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
independent_yield_rand_uniform_tasks/async_executor::LocalExecutor
time: [94.812 ms 95.000 ms 95.204 ms]
thrpt: [172.09 Kelem/s 172.46 Kelem/s 172.81 Kelem/s]
Found 16 outliers among 100 measurements (16.00%)
16 (16.00%) high severe
independent_yield_rand_uniform_tasks/unsend::executor::Executor
time: [51.288 ms 51.300 ms 51.313 ms]
thrpt: [319.30 Kelem/s 319.38 Kelem/s 319.45 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
independent_yield_rand_uniform_tasks/tokio::task::LocalSet::spawn_local/current-thread
time: [36.880 ms 36.905 ms 36.931 ms]
thrpt: [443.64 Kelem/s 443.95 Kelem/s 444.25 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
independent_yield_rand_uniform_tasks/tokio::task::JoinSet::spawn_local_on/current-thread
time: [40.870 ms 40.885 ms 40.902 ms]
thrpt: [400.57 Kelem/s 400.73 Kelem/s 400.88 Kelem/s]
Found 6 outliers among 100 measurements (6.00%)
6 (6.00%) high mild
independent_yield_rand_uniform_tasks/tokio::task::LocalSet::spawn_local/multi-thread
time: [36.140 ms 36.171 ms 36.204 ms]
thrpt: [452.55 Kelem/s 452.97 Kelem/s 453.34 Kelem/s]
Found 8 outliers among 100 measurements (8.00%)
1 (1.00%) low mild
5 (5.00%) high mild
2 (2.00%) high severe
independent_yield_rand_uniform_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [40.201 ms 40.226 ms 40.253 ms]
thrpt: [407.03 Kelem/s 407.30 Kelem/s 407.55 Kelem/s]
Found 7 outliers among 100 measurements (7.00%)
1 (1.00%) high mild
6 (6.00%) high severe
independent_yield_rand_uniform_tasks/async_executor::Executor
time: [94.446 ms 94.466 ms 94.486 ms]
thrpt: [173.40 Kelem/s 173.44 Kelem/s 173.47 Kelem/s]
independent_yield_rand_uniform_tasks/tokio::task::spawn/current-thread
time: [37.309 ms 37.328 ms 37.347 ms]
thrpt: [438.70 Kelem/s 438.92 Kelem/s 439.14 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
independent_yield_rand_uniform_tasks/tokio::task::JoinSet::spawn/current-thread
time: [42.112 ms 42.168 ms 42.224 ms]
thrpt: [388.03 Kelem/s 388.54 Kelem/s 389.06 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
independent_yield_rand_uniform_tasks/tokio::task::spawn/multi-thread
time: [21.370 ms 21.574 ms 21.780 ms]
thrpt: [752.26 Kelem/s 759.44 Kelem/s 766.69 Kelem/s]
independent_yield_rand_uniform_tasks/tokio::task::JoinSet::spawn/multi-thread
time: [26.020 ms 26.177 ms 26.340 ms]
thrpt: [622.03 Kelem/s 625.88 Kelem/s 629.68 Kelem/s]
```
### Interdependent tasks
The "X interdependent futures" functions.
The idea is to create multiple futures which randomly depend upon on each other, so polling one future causes another to wake up. This introduces random task dependencies and spike latency.
```
Benchmarking fully_interdependent_tasks/futures_concurrency::join: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 44.0s, or reduce sample count to 60.
fully_interdependent_tasks/futures_concurrency::join
time: [416.35 ms 416.63 ms 416.89 ms]
thrpt: [39.301 Kelem/s 39.325 Kelem/s 39.351 Kelem/s]
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) low severe
2 (2.00%) low mild
Benchmarking fully_interdependent_tasks/futures_concurrency::FutureGroup: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 36.2s, or reduce sample count to 80.
fully_interdependent_tasks/futures_concurrency::FutureGroup
time: [361.87 ms 361.94 ms 362.02 ms]
thrpt: [45.257 Kelem/s 45.267 Kelem/s 45.276 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) low mild
fully_interdependent_tasks/slotpoller::StackSlots
time: [2.9441 ms 2.9457 ms 2.9475 ms]
thrpt: [5.5586 Melem/s 5.5619 Melem/s 5.5650 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
fully_interdependent_tasks/slotpoller::HeapSlots
time: [2.9696 ms 2.9759 ms 2.9840 ms]
thrpt: [5.4907 Melem/s 5.5057 Melem/s 5.5172 Melem/s]
Found 16 outliers among 100 measurements (16.00%)
16 (16.00%) high severe
Benchmarking fully_interdependent_tasks/futures_util::future::JoinAll: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 30.1s, enable flat sampling, or reduce sample count to 70.
fully_interdependent_tasks/futures_util::future::JoinAll
time: [5.9566 ms 5.9574 ms 5.9583 ms]
thrpt: [2.7498 Melem/s 2.7502 Melem/s 2.7506 Melem/s]
Found 8 outliers among 100 measurements (8.00%)
6 (6.00%) high mild
2 (2.00%) high severe
Benchmarking fully_interdependent_tasks/futures_util::stream::FuturesOrdered: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 30.1s, enable flat sampling, or reduce sample count to 70.
fully_interdependent_tasks/futures_util::stream::FuturesOrdered
time: [5.9574 ms 5.9604 ms 5.9632 ms]
thrpt: [2.7475 Melem/s 2.7488 Melem/s 2.7502 Melem/s]
Found 12 outliers among 100 measurements (12.00%)
1 (1.00%) low severe
6 (6.00%) low mild
3 (3.00%) high mild
2 (2.00%) high severe
fully_interdependent_tasks/futures_util::stream::FuturesUnordered
time: [5.3343 ms 5.3369 ms 5.3393 ms]
thrpt: [3.0686 Melem/s 3.0700 Melem/s 3.0715 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking fully_interdependent_tasks/async_executor::LocalExecutor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.8s, enable flat sampling, or reduce sample count to 60.
fully_interdependent_tasks/async_executor::LocalExecutor
time: [7.4899 ms 7.5035 ms 7.5187 ms]
thrpt: [2.1791 Melem/s 2.1835 Melem/s 2.1875 Melem/s]
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) high severe
fully_interdependent_tasks/unsend::executor::Executor
time: [5.7464 ms 5.7481 ms 5.7497 ms]
thrpt: [2.8495 Melem/s 2.8503 Melem/s 2.8512 Melem/s]
Found 18 outliers among 100 measurements (18.00%)
1 (1.00%) low mild
17 (17.00%) high severe
Benchmarking fully_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 33.2s, enable flat sampling, or reduce sample count to 60.
fully_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread
time: [6.5410 ms 6.5440 ms 6.5472 ms]
thrpt: [2.5024 Melem/s 2.5037 Melem/s 2.5048 Melem/s]
Found 9 outliers among 100 measurements (9.00%)
1 (1.00%) low mild
2 (2.00%) high mild
6 (6.00%) high severe
Benchmarking fully_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 51.9s, enable flat sampling, or reduce sample count to 50.
fully_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread
time: [10.286 ms 10.290 ms 10.294 ms]
thrpt: [1.5916 Melem/s 1.5923 Melem/s 1.5929 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
Benchmarking fully_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.8s, enable flat sampling, or reduce sample count to 60.
fully_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread
time: [6.5262 ms 6.5304 ms 6.5348 ms]
thrpt: [2.5072 Melem/s 2.5089 Melem/s 2.5105 Melem/s]
Found 9 outliers among 100 measurements (9.00%)
4 (4.00%) high mild
5 (5.00%) high severe
Benchmarking fully_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 51.5s, enable flat sampling, or reduce sample count to 50.
fully_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [10.312 ms 10.337 ms 10.359 ms]
thrpt: [1.5816 Melem/s 1.5850 Melem/s 1.5888 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
Benchmarking fully_interdependent_tasks/async_executor::Executor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.7s, enable flat sampling, or reduce sample count to 60.
fully_interdependent_tasks/async_executor::Executor
time: [7.4636 ms 7.4680 ms 7.4743 ms]
thrpt: [2.1920 Melem/s 2.1939 Melem/s 2.1952 Melem/s]
Found 11 outliers among 100 measurements (11.00%)
1 (1.00%) low mild
3 (3.00%) high mild
7 (7.00%) high severe
Benchmarking fully_interdependent_tasks/tokio::task::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 34.6s, enable flat sampling, or reduce sample count to 60.
fully_interdependent_tasks/tokio::task::spawn/current-thread
time: [6.8433 ms 6.8470 ms 6.8507 ms]
thrpt: [2.3916 Melem/s 2.3929 Melem/s 2.3942 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high severe
Benchmarking fully_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 54.5s, enable flat sampling, or reduce sample count to 50.
fully_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread
time: [10.764 ms 10.770 ms 10.776 ms]
thrpt: [1.5204 Melem/s 1.5213 Melem/s 1.5221 Melem/s]
Found 7 outliers among 100 measurements (7.00%)
2 (2.00%) low severe
2 (2.00%) low mild
1 (1.00%) high mild
2 (2.00%) high severe
fully_interdependent_tasks/tokio::task::spawn/multi-thread
time: [16.612 ms 16.731 ms 16.844 ms]
thrpt: [972.71 Kelem/s 979.25 Kelem/s 986.25 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) low mild
fully_interdependent_tasks/tokio::task::JoinSet::spawn/multi-thread
time: [26.060 ms 26.197 ms 26.330 ms]
thrpt: [622.26 Kelem/s 625.40 Kelem/s 628.70 Kelem/s]
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) low mild
sqrt_interdependent_tasks/futures_concurrency::join
time: [14.624 ms 14.643 ms 14.662 ms]
thrpt: [1.1174 Melem/s 1.1189 Melem/s 1.1203 Melem/s]
Benchmarking sqrt_interdependent_tasks/futures_concurrency::FutureGroup: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 35.7s, or reduce sample count to 80.
sqrt_interdependent_tasks/futures_concurrency::FutureGroup
time: [357.25 ms 357.32 ms 357.39 ms]
thrpt: [45.843 Kelem/s 45.853 Kelem/s 45.861 Kelem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) low mild
2 (2.00%) high mild
1 (1.00%) high severe
sqrt_interdependent_tasks/slotpoller::StackSlots
time: [2.8810 ms 2.8814 ms 2.8817 ms]
thrpt: [5.6856 Melem/s 5.6862 Melem/s 5.6869 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
sqrt_interdependent_tasks/slotpoller::HeapSlots
time: [2.8464 ms 2.8476 ms 2.8489 ms]
thrpt: [5.7511 Melem/s 5.7537 Melem/s 5.7561 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
Benchmarking sqrt_interdependent_tasks/futures_util::future::JoinAll: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 30.1s, enable flat sampling, or reduce sample count to 70.
sqrt_interdependent_tasks/futures_util::future::JoinAll
time: [5.9488 ms 5.9497 ms 5.9506 ms]
thrpt: [2.7533 Melem/s 2.7537 Melem/s 2.7542 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) low mild
2 (2.00%) high mild
2 (2.00%) high severe
sqrt_interdependent_tasks/futures_util::stream::FuturesOrdered
time: [5.8809 ms 5.8839 ms 5.8873 ms]
thrpt: [2.7829 Melem/s 2.7845 Melem/s 2.7860 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) high mild
4 (4.00%) high severe
sqrt_interdependent_tasks/futures_util::stream::FuturesUnordered
time: [5.2181 ms 5.2202 ms 5.2226 ms]
thrpt: [3.1372 Melem/s 3.1386 Melem/s 3.1399 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) low severe
2 (2.00%) high mild
1 (1.00%) high severe
Benchmarking sqrt_interdependent_tasks/async_executor::LocalExecutor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.7s, enable flat sampling, or reduce sample count to 60.
sqrt_interdependent_tasks/async_executor::LocalExecutor
time: [7.3865 ms 7.3890 ms 7.3920 ms]
thrpt: [2.2164 Melem/s 2.2174 Melem/s 2.2181 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
sqrt_interdependent_tasks/unsend::executor::Executor
time: [5.6640 ms 5.6659 ms 5.6683 ms]
thrpt: [2.8905 Melem/s 2.8917 Melem/s 2.8926 Melem/s]
Found 19 outliers among 100 measurements (19.00%)
1 (1.00%) high mild
18 (18.00%) high severe
Benchmarking sqrt_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.3s, enable flat sampling, or reduce sample count to 60.
sqrt_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread
time: [6.3692 ms 6.3744 ms 6.3805 ms]
thrpt: [2.5678 Melem/s 2.5703 Melem/s 2.5724 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
Benchmarking sqrt_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.2s, enable flat sampling, or reduce sample count to 50.
sqrt_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread
time: [9.7686 ms 9.7742 ms 9.7796 ms]
thrpt: [1.6753 Melem/s 1.6762 Melem/s 1.6772 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) low mild
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking sqrt_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.3s, enable flat sampling, or reduce sample count to 60.
sqrt_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread
time: [6.4289 ms 6.4420 ms 6.4543 ms]
thrpt: [2.5384 Melem/s 2.5433 Melem/s 2.5485 Melem/s]
Found 9 outliers among 100 measurements (9.00%)
7 (7.00%) high mild
2 (2.00%) high severe
Benchmarking sqrt_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 50.4s, enable flat sampling, or reduce sample count to 50.
sqrt_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [9.6907 ms 9.7018 ms 9.7144 ms]
thrpt: [1.6866 Melem/s 1.6888 Melem/s 1.6907 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking sqrt_interdependent_tasks/async_executor::Executor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.4s, enable flat sampling, or reduce sample count to 60.
sqrt_interdependent_tasks/async_executor::Executor
time: [7.3956 ms 7.3969 ms 7.3984 ms]
thrpt: [2.2145 Melem/s 2.2150 Melem/s 2.2154 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) high mild
3 (3.00%) high severe
Benchmarking sqrt_interdependent_tasks/tokio::task::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 33.4s, enable flat sampling, or reduce sample count to 60.
sqrt_interdependent_tasks/tokio::task::spawn/current-thread
time: [6.6131 ms 6.6178 ms 6.6225 ms]
thrpt: [2.4740 Melem/s 2.4758 Melem/s 2.4775 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
Benchmarking sqrt_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 50.6s, enable flat sampling, or reduce sample count to 50.
sqrt_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread
time: [10.010 ms 10.015 ms 10.021 ms]
thrpt: [1.6350 Melem/s 1.6359 Melem/s 1.6368 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severe
sqrt_interdependent_tasks/tokio::task::spawn/multi-thread
time: [13.231 ms 13.300 ms 13.364 ms]
thrpt: [1.2260 Melem/s 1.2319 Melem/s 1.2383 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
3 (3.00%) low severe
2 (2.00%) low mild
sqrt_interdependent_tasks/tokio::task::JoinSet::spawn/multi-thread
time: [19.382 ms 19.424 ms 19.465 ms]
thrpt: [841.72 Kelem/s 843.50 Kelem/s 845.32 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) low mild
10000_interdependent_tasks/futures_concurrency::join
time: [217.93 ms 218.06 ms 218.20 ms]
thrpt: [75.086 Kelem/s 75.136 Kelem/s 75.179 Kelem/s]
Found 6 outliers among 100 measurements (6.00%)
3 (3.00%) low mild
2 (2.00%) high mild
1 (1.00%) high severe
Benchmarking 10000_interdependent_tasks/futures_concurrency::FutureGroup: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 36.0s, or reduce sample count to 80.
10000_interdependent_tasks/futures_concurrency::FutureGroup
time: [359.38 ms 359.43 ms 359.48 ms]
thrpt: [45.577 Kelem/s 45.583 Kelem/s 45.590 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
10000_interdependent_tasks/slotpoller::StackSlots
time: [2.8547 ms 2.8562 ms 2.8578 ms]
thrpt: [5.7331 Melem/s 5.7363 Melem/s 5.7392 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
10000_interdependent_tasks/slotpoller::HeapSlots
time: [2.8460 ms 2.8474 ms 2.8488 ms]
thrpt: [5.7511 Melem/s 5.7540 Melem/s 5.7568 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
10000_interdependent_tasks/futures_util::future::JoinAll
time: [5.8433 ms 5.8449 ms 5.8473 ms]
thrpt: [2.8020 Melem/s 2.8031 Melem/s 2.8039 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severe
10000_interdependent_tasks/futures_util::stream::FuturesOrdered
time: [5.8424 ms 5.8437 ms 5.8451 ms]
thrpt: [2.8030 Melem/s 2.8037 Melem/s 2.8043 Melem/s]
Found 6 outliers among 100 measurements (6.00%)
2 (2.00%) low mild
1 (1.00%) high mild
3 (3.00%) high severe
10000_interdependent_tasks/futures_util::stream::FuturesUnordered
time: [5.2866 ms 5.2973 ms 5.3067 ms]
thrpt: [3.0874 Melem/s 3.0929 Melem/s 3.0992 Melem/s]
Benchmarking 10000_interdependent_tasks/async_executor::LocalExecutor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 38.0s, enable flat sampling, or reduce sample count to 60.
10000_interdependent_tasks/async_executor::LocalExecutor
time: [7.4469 ms 7.4491 ms 7.4518 ms]
thrpt: [2.1987 Melem/s 2.1994 Melem/s 2.2001 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
10000_interdependent_tasks/unsend::executor::Executor
time: [5.6670 ms 5.6680 ms 5.6690 ms]
thrpt: [2.8901 Melem/s 2.8906 Melem/s 2.8911 Melem/s]
Found 16 outliers among 100 measurements (16.00%)
2 (2.00%) high mild
14 (14.00%) high severe
Benchmarking 10000_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.3s, enable flat sampling, or reduce sample count to 60.
10000_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread
time: [6.3633 ms 6.3684 ms 6.3741 ms]
thrpt: [2.5704 Melem/s 2.5727 Melem/s 2.5748 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 10000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.0s, enable flat sampling, or reduce sample count to 50.
10000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread
time: [9.7181 ms 9.7232 ms 9.7285 ms]
thrpt: [1.6841 Melem/s 1.6850 Melem/s 1.6859 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
3 (3.00%) high mild
2 (2.00%) high severe
Benchmarking 10000_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.0s, enable flat sampling, or reduce sample count to 60.
10000_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread
time: [6.3308 ms 6.3357 ms 6.3413 ms]
thrpt: [2.5837 Melem/s 2.5860 Melem/s 2.5880 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
Benchmarking 10000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.3s, enable flat sampling, or reduce sample count to 50.
10000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [9.7688 ms 9.7784 ms 9.7883 ms]
thrpt: [1.6738 Melem/s 1.6755 Melem/s 1.6772 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 10000_interdependent_tasks/async_executor::Executor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.7s, enable flat sampling, or reduce sample count to 60.
10000_interdependent_tasks/async_executor::Executor
time: [7.4545 ms 7.4568 ms 7.4596 ms]
thrpt: [2.1964 Melem/s 2.1972 Melem/s 2.1979 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) high mild
3 (3.00%) high severe
Benchmarking 10000_interdependent_tasks/tokio::task::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 33.4s, enable flat sampling, or reduce sample count to 60.
10000_interdependent_tasks/tokio::task::spawn/current-thread
time: [6.6189 ms 6.6234 ms 6.6283 ms]
thrpt: [2.4718 Melem/s 2.4736 Melem/s 2.4753 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high severe
Benchmarking 10000_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 51.0s, enable flat sampling, or reduce sample count to 50.
10000_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread
time: [10.122 ms 10.129 ms 10.136 ms]
thrpt: [1.6164 Melem/s 1.6175 Melem/s 1.6187 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) low mild
2 (2.00%) high severe
10000_interdependent_tasks/tokio::task::spawn/multi-thread
time: [14.234 ms 14.330 ms 14.422 ms]
thrpt: [1.1361 Melem/s 1.1433 Melem/s 1.1511 Melem/s]
Found 6 outliers among 100 measurements (6.00%)
6 (6.00%) low mild
10000_interdependent_tasks/tokio::task::JoinSet::spawn/multi-thread
time: [19.874 ms 19.959 ms 20.042 ms]
thrpt: [817.49 Kelem/s 820.89 Kelem/s 824.40 Kelem/s]
Found 4 outliers among 100 measurements (4.00%)
4 (4.00%) low mild
1000_interdependent_tasks/futures_concurrency::join
time: [77.518 ms 77.556 ms 77.592 ms]
thrpt: [211.16 Kelem/s 211.25 Kelem/s 211.36 Kelem/s]
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) low mild
Benchmarking 1000_interdependent_tasks/futures_concurrency::FutureGroup: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 35.7s, or reduce sample count to 80.
1000_interdependent_tasks/futures_concurrency::FutureGroup
time: [357.00 ms 357.06 ms 357.12 ms]
thrpt: [45.878 Kelem/s 45.886 Kelem/s 45.893 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severe
1000_interdependent_tasks/slotpoller::StackSlots
time: [2.8490 ms 2.8497 ms 2.8504 ms]
thrpt: [5.7479 Melem/s 5.7494 Melem/s 5.7508 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high severe
1000_interdependent_tasks/slotpoller::HeapSlots
time: [2.8760 ms 2.8779 ms 2.8802 ms]
thrpt: [5.6885 Melem/s 5.6930 Melem/s 5.6969 Melem/s]
Found 12 outliers among 100 measurements (12.00%)
11 (11.00%) high mild
1 (1.00%) high severe
1000_interdependent_tasks/futures_util::future::JoinAll
time: [5.8800 ms 5.8807 ms 5.8814 ms]
thrpt: [2.7857 Melem/s 2.7861 Melem/s 2.7864 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
1000_interdependent_tasks/futures_util::stream::FuturesOrdered
time: [5.8763 ms 5.8786 ms 5.8813 ms]
thrpt: [2.7858 Melem/s 2.7870 Melem/s 2.7882 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severe
1000_interdependent_tasks/futures_util::stream::FuturesUnordered
time: [5.2525 ms 5.2558 ms 5.2588 ms]
thrpt: [3.1155 Melem/s 3.1173 Melem/s 3.1193 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low severe
2 (2.00%) high severe
Benchmarking 1000_interdependent_tasks/async_executor::LocalExecutor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.7s, enable flat sampling, or reduce sample count to 60.
1000_interdependent_tasks/async_executor::LocalExecutor
time: [7.4177 ms 7.4210 ms 7.4250 ms]
thrpt: [2.2066 Melem/s 2.2078 Melem/s 2.2088 Melem/s]
Found 10 outliers among 100 measurements (10.00%)
4 (4.00%) high mild
6 (6.00%) high severe
1000_interdependent_tasks/unsend::executor::Executor
time: [5.6975 ms 5.6983 ms 5.6991 ms]
thrpt: [2.8748 Melem/s 2.8753 Melem/s 2.8757 Melem/s]
Found 17 outliers among 100 measurements (17.00%)
1 (1.00%) high mild
16 (16.00%) high severe
Benchmarking 1000_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.1s, enable flat sampling, or reduce sample count to 60.
1000_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread
time: [6.3590 ms 6.3632 ms 6.3675 ms]
thrpt: [2.5731 Melem/s 2.5748 Melem/s 2.5765 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 1000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.0s, enable flat sampling, or reduce sample count to 50.
1000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread
time: [9.6850 ms 9.6929 ms 9.7018 ms]
thrpt: [1.6888 Melem/s 1.6903 Melem/s 1.6917 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
Benchmarking 1000_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 31.8s, enable flat sampling, or reduce sample count to 60.
1000_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread
time: [6.2820 ms 6.2848 ms 6.2879 ms]
thrpt: [2.6056 Melem/s 2.6069 Melem/s 2.6081 Melem/s]
Found 9 outliers among 100 measurements (9.00%)
2 (2.00%) high mild
7 (7.00%) high severe
Benchmarking 1000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 48.9s, enable flat sampling, or reduce sample count to 50.
1000_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [9.6972 ms 9.7061 ms 9.7168 ms]
thrpt: [1.6862 Melem/s 1.6880 Melem/s 1.6896 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
4 (4.00%) high mild
1 (1.00%) high severe
Benchmarking 1000_interdependent_tasks/async_executor::Executor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 38.1s, enable flat sampling, or reduce sample count to 60.
1000_interdependent_tasks/async_executor::Executor
time: [7.5138 ms 7.5248 ms 7.5346 ms]
thrpt: [2.1745 Melem/s 2.1773 Melem/s 2.1805 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
Benchmarking 1000_interdependent_tasks/tokio::task::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 33.3s, enable flat sampling, or reduce sample count to 60.
1000_interdependent_tasks/tokio::task::spawn/current-thread
time: [6.5820 ms 6.5855 ms 6.5895 ms]
thrpt: [2.4864 Melem/s 2.4879 Melem/s 2.4892 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
Benchmarking 1000_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 50.9s, enable flat sampling, or reduce sample count to 50.
1000_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread
time: [10.101 ms 10.108 ms 10.115 ms]
thrpt: [1.6198 Melem/s 1.6209 Melem/s 1.6221 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low severe
1 (1.00%) low mild
1 (1.00%) high severe
1000_interdependent_tasks/tokio::task::spawn/multi-thread
time: [13.736 ms 13.825 ms 13.904 ms]
thrpt: [1.1783 Melem/s 1.1851 Melem/s 1.1928 Melem/s]
Found 10 outliers among 100 measurements (10.00%)
8 (8.00%) low severe
1 (1.00%) low mild
1 (1.00%) high mild
1000_interdependent_tasks/tokio::task::JoinSet::spawn/multi-thread
time: [19.792 ms 19.840 ms 19.887 ms]
thrpt: [823.84 Kelem/s 825.83 Kelem/s 827.82 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild
100_interdependent_tasks/futures_concurrency::join
time: [13.880 ms 13.884 ms 13.888 ms]
thrpt: [1.1797 Melem/s 1.1801 Melem/s 1.1804 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) low mild
2 (2.00%) high mild
2 (2.00%) high severe
Benchmarking 100_interdependent_tasks/futures_concurrency::FutureGroup: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 35.3s, or reduce sample count to 80.
100_interdependent_tasks/futures_concurrency::FutureGroup
time: [352.31 ms 352.37 ms 352.45 ms]
thrpt: [46.487 Kelem/s 46.496 Kelem/s 46.505 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
100_interdependent_tasks/slotpoller::StackSlots
time: [2.8285 ms 2.8289 ms 2.8293 ms]
thrpt: [5.7908 Melem/s 5.7916 Melem/s 5.7925 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
100_interdependent_tasks/slotpoller::HeapSlots
time: [2.8253 ms 2.8260 ms 2.8268 ms]
thrpt: [5.7960 Melem/s 5.7976 Melem/s 5.7991 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
Benchmarking 100_interdependent_tasks/futures_util::future::JoinAll: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 30.1s, enable flat sampling, or reduce sample count to 70.
100_interdependent_tasks/futures_util::future::JoinAll
time: [5.9406 ms 5.9413 ms 5.9420 ms]
thrpt: [2.7573 Melem/s 2.7576 Melem/s 2.7580 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) low mild
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 100_interdependent_tasks/futures_util::stream::FuturesOrdered: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 30.1s, enable flat sampling, or reduce sample count to 70.
100_interdependent_tasks/futures_util::stream::FuturesOrdered
time: [5.9682 ms 5.9717 ms 5.9754 ms]
thrpt: [2.7419 Melem/s 2.7436 Melem/s 2.7452 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
100_interdependent_tasks/futures_util::stream::FuturesUnordered
time: [5.2705 ms 5.2746 ms 5.2787 ms]
thrpt: [3.1038 Melem/s 3.1062 Melem/s 3.1087 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking 100_interdependent_tasks/async_executor::LocalExecutor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.5s, enable flat sampling, or reduce sample count to 60.
100_interdependent_tasks/async_executor::LocalExecutor
time: [7.4052 ms 7.4068 ms 7.4086 ms]
thrpt: [2.2115 Melem/s 2.2120 Melem/s 2.2125 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severe
100_interdependent_tasks/unsend::executor::Executor
time: [5.6813 ms 5.6818 ms 5.6825 ms]
thrpt: [2.8833 Melem/s 2.8836 Melem/s 2.8839 Melem/s]
Found 18 outliers among 100 measurements (18.00%)
18 (18.00%) high severe
Benchmarking 100_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.2s, enable flat sampling, or reduce sample count to 60.
100_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread
time: [6.3492 ms 6.3531 ms 6.3572 ms]
thrpt: [2.5772 Melem/s 2.5789 Melem/s 2.5805 Melem/s]
Found 8 outliers among 100 measurements (8.00%)
6 (6.00%) high mild
2 (2.00%) high severe
Benchmarking 100_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.2s, enable flat sampling, or reduce sample count to 50.
100_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread
time: [9.7289 ms 9.7340 ms 9.7392 ms]
thrpt: [1.6823 Melem/s 1.6832 Melem/s 1.6841 Melem/s]
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severe
Benchmarking 100_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.1s, enable flat sampling, or reduce sample count to 60.
100_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread
time: [6.3172 ms 6.3200 ms 6.3231 ms]
thrpt: [2.5911 Melem/s 2.5924 Melem/s 2.5935 Melem/s]
Found 6 outliers among 100 measurements (6.00%)
2 (2.00%) high mild
4 (4.00%) high severe
Benchmarking 100_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.1s, enable flat sampling, or reduce sample count to 50.
100_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [9.6883 ms 9.6948 ms 9.7012 ms]
thrpt: [1.6889 Melem/s 1.6900 Melem/s 1.6911 Melem/s]
Found 9 outliers among 100 measurements (9.00%)
3 (3.00%) high mild
6 (6.00%) high severe
Benchmarking 100_interdependent_tasks/async_executor::Executor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.4s, enable flat sampling, or reduce sample count to 60.
100_interdependent_tasks/async_executor::Executor
time: [7.3870 ms 7.3876 ms 7.3882 ms]
thrpt: [2.2176 Melem/s 2.2178 Melem/s 2.2179 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
Benchmarking 100_interdependent_tasks/tokio::task::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 33.4s, enable flat sampling, or reduce sample count to 60.
100_interdependent_tasks/tokio::task::spawn/current-thread
time: [6.7775 ms 6.7883 ms 6.8000 ms]
thrpt: [2.4094 Melem/s 2.4135 Melem/s 2.4174 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
Benchmarking 100_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 51.0s, enable flat sampling, or reduce sample count to 50.
100_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread
time: [10.075 ms 10.081 ms 10.086 ms]
thrpt: [1.6244 Melem/s 1.6252 Melem/s 1.6263 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
2 (2.00%) high severe
100_interdependent_tasks/tokio::task::spawn/multi-thread
time: [13.262 ms 13.346 ms 13.420 ms]
thrpt: [1.2209 Melem/s 1.2277 Melem/s 1.2354 Melem/s]
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) low severe
100_interdependent_tasks/tokio::task::JoinSet::spawn/multi-thread
time: [19.189 ms 19.223 ms 19.258 ms]
thrpt: [850.76 Kelem/s 852.29 Kelem/s 853.84 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild
10_interdependent_tasks/futures_concurrency::join
time: [4.5877 ms 4.5884 ms 4.5892 ms]
thrpt: [3.5702 Melem/s 3.5707 Melem/s 3.5713 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking 10_interdependent_tasks/futures_concurrency::FutureGroup: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 31.6s, or reduce sample count to 90.
10_interdependent_tasks/futures_concurrency::FutureGroup
time: [315.40 ms 315.43 ms 315.47 ms]
thrpt: [51.935 Kelem/s 51.941 Kelem/s 51.947 Kelem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) low mild
1 (1.00%) high mild
10_interdependent_tasks/slotpoller::StackSlots
time: [2.7999 ms 2.8010 ms 2.8021 ms]
thrpt: [5.8470 Melem/s 5.8494 Melem/s 5.8517 Melem/s]
Found 7 outliers among 100 measurements (7.00%)
5 (5.00%) high mild
2 (2.00%) high severe
10_interdependent_tasks/slotpoller::HeapSlots
time: [2.8193 ms 2.8212 ms 2.8230 ms]
thrpt: [5.8038 Melem/s 5.8074 Melem/s 5.8114 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
10_interdependent_tasks/futures_util::future::JoinAll
time: [5.7046 ms 5.7057 ms 5.7072 ms]
thrpt: [2.8708 Melem/s 2.8715 Melem/s 2.8720 Melem/s]
Found 6 outliers among 100 measurements (6.00%)
2 (2.00%) low mild
1 (1.00%) high mild
3 (3.00%) high severe
10_interdependent_tasks/futures_util::stream::FuturesOrdered
time: [5.6998 ms 5.7021 ms 5.7048 ms]
thrpt: [2.8720 Melem/s 2.8733 Melem/s 2.8745 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
10_interdependent_tasks/futures_util::stream::FuturesUnordered
time: [5.0914 ms 5.0948 ms 5.0980 ms]
thrpt: [3.2138 Melem/s 3.2158 Melem/s 3.2180 Melem/s]
Found 18 outliers among 100 measurements (18.00%)
1 (1.00%) low mild
17 (17.00%) high severe
Benchmarking 10_interdependent_tasks/async_executor::LocalExecutor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 37.7s, enable flat sampling, or reduce sample count to 60.
10_interdependent_tasks/async_executor::LocalExecutor
time: [7.2986 ms 7.3164 ms 7.3360 ms]
thrpt: [2.2334 Melem/s 2.2393 Melem/s 2.2448 Melem/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
10_interdependent_tasks/unsend::executor::Executor
time: [5.5930 ms 5.5938 ms 5.5947 ms]
thrpt: [2.9285 Melem/s 2.9289 Melem/s 2.9294 Melem/s]
Found 17 outliers among 100 measurements (17.00%)
17 (17.00%) high severe
Benchmarking 10_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 31.9s, enable flat sampling, or reduce sample count to 60.
10_interdependent_tasks/tokio::task::LocalSet::spawn_local/current-thread
time: [6.3041 ms 6.3074 ms 6.3107 ms]
thrpt: [2.5962 Melem/s 2.5976 Melem/s 2.5989 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 10_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.0s, enable flat sampling, or reduce sample count to 50.
10_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/current-thread
time: [9.6922 ms 9.6954 ms 9.6988 ms]
thrpt: [1.6893 Melem/s 1.6899 Melem/s 1.6904 Melem/s]
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) low mild
3 (3.00%) high mild
1 (1.00%) high severe
Benchmarking 10_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 31.8s, enable flat sampling, or reduce sample count to 60.
10_interdependent_tasks/tokio::task::LocalSet::spawn_local/multi-thread
time: [6.2865 ms 6.2920 ms 6.2983 ms]
thrpt: [2.6013 Melem/s 2.6039 Melem/s 2.6062 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 10_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 49.2s, enable flat sampling, or reduce sample count to 50.
10_interdependent_tasks/tokio::task::JoinSet::spawn_local_on/multi-thread
time: [9.6698 ms 9.6966 ms 9.7296 ms]
thrpt: [1.6839 Melem/s 1.6897 Melem/s 1.6944 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
Benchmarking 10_interdependent_tasks/async_executor::Executor: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 36.7s, enable flat sampling, or reduce sample count to 60.
10_interdependent_tasks/async_executor::Executor
time: [7.2605 ms 7.2614 ms 7.2622 ms]
thrpt: [2.2561 Melem/s 2.2563 Melem/s 2.2566 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 10_interdependent_tasks/tokio::task::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 32.8s, enable flat sampling, or reduce sample count to 60.
10_interdependent_tasks/tokio::task::spawn/current-thread
time: [6.5088 ms 6.5123 ms 6.5155 ms]
thrpt: [2.5146 Melem/s 2.5159 Melem/s 2.5172 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severe
Benchmarking 10_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 30.0s. You may wish to increase target time to 51.7s, enable flat sampling, or reduce sample count to 50.
10_interdependent_tasks/tokio::task::JoinSet::spawn/current-thread
time: [10.103 ms 10.119 ms 10.141 ms]
thrpt: [1.6156 Melem/s 1.6191 Melem/s 1.6217 Melem/s]
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
10_interdependent_tasks/tokio::task::spawn/multi-thread
time: [13.687 ms 13.751 ms 13.806 ms]
thrpt: [1.1868 Melem/s 1.1915 Melem/s 1.1970 Melem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) low severe
1 (1.00%) low mild
10_interdependent_tasks/tokio::task::JoinSet::spawn/multi-thread
time: [18.662 ms 18.695 ms 18.728 ms]
thrpt: [874.84 Kelem/s 876.37 Kelem/s 877.94 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
2 (2.00%) high mild
```