比较 Rust 异步和 Linux 线程上下文切换的时间。
thread-brigade 和 async-brigade 分别创建 500 个通过管道连接的任务(类似“桶队”),并测量从第一个任务到最后一个任务传播单个字节所花费的时间。其中一个使用线程实现,另一个使用 Tokio 程序包中的异步 I/O 实现。$ cd async-brigade/
$ /bin/time cargo run --release
Finished release [optimized] target(s) in 0.02s
Running /home/jimb/Rust/context-switch/target/release/async-brigade
500 个任务, 10000 次迭代:
平均每次迭代 1.795 毫秒, 标准偏差 82.016 微秒 (每个任务每次迭代 3.589 微秒)
9.83 个用户 8.33 个系统 0:18.19 耗时 99% CPU (0 平均文本 + 0 平均数据 17144 最大内存) k
0 个输入 + 0 个输出 (0 个主要 + 2283 个次要) 页错误 0 个交换
暂无开放 Issues,或尚未同步最近议题。