6个版本
0.2.4 | 2020年7月31日 |
---|---|
0.2.3 | 2020年7月31日 |
0.1.0 | 2020年7月24日 |
#494 in 压缩
47KB
642 行
C-Squared直方图 Aaron Gindi
这个库旨在使用户能够控制直方图的精度和内存使用之间的权衡,这对于内存研究至关重要。
这个库不实现节省内存的操作,而是仅模拟这些操作以供评估。
补丁0.2.0:修复与CompressedHistogram相关的错误,并使CompressedHistogram更高效。由于从Param实现者中移除了Copy trait,C2Params现在返回嵌入式参数的引用而不是副本,因此这是一个破坏性更改。
lib.rs
:
这个库包含用于模拟空间高效直方图的工具。对于这个库,直方图是从标签到频率的映射,这两个都必须是数值。
我们提供了一个标准直方图实现(StandardHistogram
),它使用HashMap以原值存储标签-频率对。
此外,我们还提供了三个额外的直方图实现,它们要么比StandardHistogram
使用更少的内存,要么使用固定数量的内存。优化是在两个维度上进行的,标签存储(称为“压缩”)和频率存储(称为“压缩”)。因此得名“C-Squared直方图”。这三个实现如下
CompressedHistogram
- 这个实现通过近似频率使用比StandardHistogram
更少的空间CompactHistogram
- 这个实现根据几个精度参数消耗固定数量的空间。通过近似标签来节省空间。C2Histogram
- 这个实现也利用了固定数量的空间,通常比CompactHistogram少得多。它近似标签和频率。
这些实现都是参数化的,以便用户可以直接控制精度和内存性能之间的权衡。
要构建一个 StandardHistogram
,请使用函数 create_standard_histogram
。然后,可以使用转换函数 to_compact
、to_compressed
或 to_c2
从该标准直方图派生出其他直方图。