#arena #arena-allocation #dynamically-sized #performance #supporting #case

dynamic-arena

动态类型化的内存区域,支持任何Sized类型

5个版本

0.1.6 2022年2月14日
0.1.4 2020年5月16日
0.1.2 2019年1月22日
0.1.1 2017年11月4日
0.1.0 2017年11月4日

#370内存管理

22 每月下载量

MIT 协议

18KB
254

dynamic-arena crates.io docs.rs

动态类型化的内存区域,支持任何Sized类型。

特性

  • 内存区域分配非常快,通常只需要指针弹跳
  • 可以静态保证指针在内存区域生命周期内有效
    • 遗憾的是这意味着内存区域只能一次性释放
  • 允许创建自引用的内存区域分配结构体
  • 而不是使用多个typed_arena::Arena,您可以使用一个DynamicArena
    • 这有助于理解代码并显著减少内存使用
    • 由于所有内存都是连续的,甚至可能有助于提高缓存性能。
  • 在最新稳定版本上编译

缺点

  • 对于非Copy类型的分配速度略慢于typed_arena::Arena
    • 这是因为析构是动态分发的
  • 为了保持安全性,分配项中的所有指针必须比内存区域本身存在的时间更长,这样项就不会比它们指向的项存活时间更长。
  • 这静态阻止了使用alloc的自引用结构体
  • 但是,您仍然可以使用alloc_copy
    • 有关如何使用此功能的更多信息,请参阅文档的安全性部分

依赖项

~240KB