6个版本
使用旧Rust 2015
0.3.1 | 2018年2月1日 |
---|---|
0.3.0 | 2018年2月1日 |
0.2.0 | 2016年11月3日 |
0.1.2 | 2016年9月15日 |
#63 in #safety
20KB
309 行
状态更新
由于rust缺少功能,进度受阻。
- 常量泛型:在没有它的帮助下,无法指定
Pool
和SmallBuffer
的缓冲区大小。目前已设置默认值,但可能不适合每个用途。
nightly需求
需要nightly,因为以下功能
#![feature(allocator_api)]
:为Pool
分配自定义对齐方式
VeryFast
VeryFast
是一组对游戏开发者非常有用的工具,但也适用于关注性能的任何人。它们专注于速度和多线程安全性。
目前它提供了一个有用的类 - Pool
,它像Box
一样在堆上分配对象,但批量分配并重用内存而不是在丢弃时释放!它与Arena
类似,但允许释放。
文档
工具
Pool
Pool
以批量方式在堆上分配对象。所有对象都必须是同一类型,就像在Vec
中一样。它允许快速的多线程并行分配对象。当对象被丢弃时,它们的内存会返回到池中,以便在未来分配中重用。只有当所有对象和Pool
都被丢弃时,才会释放内存。
有一些针对速度的优化:它可以在单独的CPU缓存行上分配每个对象(有助于多线程访问相邻元素)。除了在分配新批次时,分配使用无锁策略。释放也使用无锁策略。
Pool
类似于各种Arena
实现,但它允许释放元素和重用内存。
SmallBuffer
具有扩展能力的内联分配的小缓冲区。可以异步推送值。读取值需要独占访问。只能通过耗尽整个缓冲区来删除值。
SmallBuffer
作为少量使用的元素的缓冲区非常有用。它具有较小的在线容量,因此几条消息不会导致它分配内存。如果它接收到的数据超过其存储能力,它将分配额外的内存来处理。它不会释放任何内存,因为在某些情况下,如果一个元素曾经被大量使用,它继续高使用的可能性更高。
依赖项
~15KB