30 个版本

0.14.6 2024年5月31日
0.14.4 2024年3月21日
0.12.0 2023年6月10日
0.9.0 2023年3月31日
0.0.1-beta.122022年11月8日

#295数据结构

Download history 155/week @ 2024-04-13 5/week @ 2024-04-20 8/week @ 2024-05-18 73/week @ 2024-05-25 116/week @ 2024-06-01 11/week @ 2024-06-08 3/week @ 2024-06-15 220/week @ 2024-07-27

220 每月下载量
2 个包中使用 (通过 redis-swapplex)

MIT 许可

64KB
2K SLoC

Stack Queue

License Cargo Documentation

一个(主要是)无堆自动批量队列,通过协商对线程拥有的循环缓冲区上的任务范围进行独占访问来实现可延迟的批量处理。在将任务入队直到批次边界的情况下,可以在获取数据库连接后延迟处理,从而允许进行机会性批量处理。这种方法在所有工作负载级别上提供最佳批量处理,没有批量收集开销、不必要的超时或不必要的分配。

使用方法

在使用 local_queue 宏时实现以下之一

最佳运行时配置

为了获得最佳性能,请独家使用通过 tokio::maintokio::test 宏配置的 Tokio 运行时,将 crate 属性设置为 async_local,同时启用 async-local 上的 barrier-protected-runtime 功能。这样做会将 Tokio 运行时配置为具有一个屏障,在关闭期间会会合运行时工作线程,从而确保任务不会比运行时工作线程拥有的线程本地数据寿命更长,从而消除了作为寿命扩展备用手段的 Box::leak 的需求。

基准测试结果 // 批量处理 16 个任务

crossbeam flume TaskQueue tokio::mpsc
576.33 ns (✅ 1.00x) 656.54 ns (❌ 慢1.14倍) 255.33 ns (🚀 快2.26倍) 551.48 ns (✅ 快1.05倍)

依赖项

~3–32MB
~478K SLoC