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数据结构

Download history 102/week @ 2024-07-22 168/week @ 2024-07-29 34/week @ 2024-08-05

每月304次下载

MIT 许可证

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文件以获取详细信息。

无运行时依赖项