4次发布
0.1.3 | 2024年8月3日 |
---|---|
0.1.2 | 2024年8月3日 |
0.1.1 | 2024年7月28日 |
0.1.0 | 2024年7月28日 |
#881 在 数据结构
每月304次下载
21KB
532 行
SmallObjectPool
Antoine Savine所著《现代计算金融:AAD和并行模拟》一书中描述的块列表的Rust实现。仓库包含以下实现
PtrBased
:一个特质,提供了与数据结构交互的方法,就像在C++中一样(即使用指针和迭代器)。ArrayLike
:一个简单的列表实现,使用指针。LinkedList
:链表,使用指针。SmallObjectPool
:又称“BlockList”,一个固定大小块的列表,使用指针。
使用方法
use smallobjectpool::SmallObjectPool;
fn main() {
let mut sop = SmallObjectPool::<u32, 4>::new();
for i in 0..8 {
sop.push(i);
}
}
性能
在性能方面,SmallObjectPool
达到了与Vec
接近的性能,但后者仍然更快。在这种情况下,SmallObjectPool
的优点将来自于更小的内存占用,因为它在达到容量后不需要为每个元素分配内存。
操作 | 平均时间(ns或µs) | 异常值 |
---|---|---|
vec push | 932.30 ns | 无 |
array direct insert | 326.35 ns | 15个异常值(3个轻微高,12个严重高) |
sop push | 18.534 µs | 17个异常值(9个轻微低,5个轻微高,3个严重高) |
linked list push | 220.50 µs | 6个异常值(3个轻微高,3个严重高) |
vec high volume push | 16.383 µs | 无 |
许可证
本项目采用MIT许可证 - 请参阅LICENSE.md文件以获取详细信息。