2个版本
使用旧的Rust 2015
0.1.1 | 2018年8月17日 |
---|---|
0.1.0 | 2017年3月25日 |
#180 在 性能分析 中
被 2 crates 使用
18KB
189 行
queuecheck
一个线程安全的队列测试和基准测试库。
支持稳定、beta和nightly Rust渠道。
在Apache License 2.0下发布。
示例
测试
以下测试了标准库中的无界MPMC队列,通过两个生产者线程产生100,000个项目,然后由一个消费者线程消费。
use std::sync::mpsc::{self, Receiver, Sender};
let (producer, consumer) = mpsc::channel();
queuecheck_test!(
// enqueue/dequeue operation pairs
100_000,
// producer threads
vec![producer.clone(), producer],
// consumer threads
vec![consumer],
// produce operation
|p: &Sender<String>, i: String| p.send(i).unwrap(),
// consume operation
|c: &Receiver<String>| c.try_recv().ok()
);
基准测试
延迟
以下基准测试了标准库中无界MPMC队列的延迟,通过两个生产者线程产生100,000个项目,然后由一个消费者线程消费。
use std::sync::mpsc::{self, Receiver, Sender};
let (producer, consumer) = mpsc::channel();
let latency = queuecheck_bench_latency!(
// warmup and measurement enqueue/dequeue operation pairs
(1_000, 100_000),
// producer threads
vec![producer.clone(), producer],
// consumer threads
vec![consumer],
// produce operation
|p: &Sender<i32>, i: i32| p.send(i).unwrap(),
// consume operation
|c: &Receiver<i32>| c.try_recv().ok()
);
latency.report("mpmc", &[50.0, 70.0, 90.0, 95.0, 99.09]);
吞吐量
以下基准测试了标准库中无界MPMC队列的吞吐量,通过两个生产者线程产生100,000个项目,然后由一个消费者线程消费。
use std::sync::mpsc::{self, Receiver, Sender};
let (producer, consumer) = mpsc::channel();
let ops = queuecheck_bench_throughput!(
// warmup and measurement enqueue/dequeue operation pairs
(1_000, 100_000),
// producer threads
vec![producer.clone(), producer],
// consumer threads
vec![consumer],
// produce operation
|p: &Sender<i32>, i: i32| p.send(i).unwrap(),
// consume operation
|c: &Receiver<i32>| c.try_recv().ok()
);
println!("{:.3} operation/second", ops);