如何序列化 boost::accumulators::accumulator_set<>?

sve*_*ena 5 c++ boost

如今,每个人都关心保护用户隐私及其数据。能够对数据进行统计分析,而无需实际将数据样本保留超过必要的时间,这是朝着正确方向迈出的坚实一步。

boost库中累加器的概念看起来非常适合实现这一目标。

累加器框架是用于执行增量计算的框架。该框架的使用遵循以下模式:

用户accumulator_set<>一次将一个样本推送到对象中。

accumulator_set<>以尽可能最有效的方法计算请求的数量,解决请求的计算之间的依赖性,并可能缓存中间结果。

只有一个大问题。我不知道如何序列化累加器实例,以便我可以保留它,而无需在应用程序启动之间保留示例数据。

如何创建实例并恢复其应用新样本并继续增量计算所需的所有必要参数?我不想从头开始,也不想保留以前的样本。

seh*_*ehe 2

我认为您误解了accumulator_set 内部的工作原理。

\n\n

它不保留样本。事实上,如果您只是参数化“min”和“max”统计数据的集合,那么唯一要保留的状态就是结果类型的 2 个值。

\n\n

其他一些统计数据保留更多状态(例如直方图、百分位数等)。

\n\n

由于accumulator_set<>首先支持序列化\xc2\xb9,因此在样本保留方面应该没问题。

\n\n

\xc2\xb9 我还没检查过

\n\n
\n\n

更新

\n\n

好的。我已经研究了大约一个小时,我认为没有理由认为序列化是受支持的或易于实现的。

\n\n

我见过最多的是功能是可复制的。

\n\n

但是没有可以从外部调整的分配器,因此您也无法利用内存映射文件。

\n\n

这让我得出结论,你想要的不是图书馆的功能。那么,文档介绍:

\n\n
\n

Boost.Accumulators 既是增量统计计算的库,也是增量计算的可扩展框架。

\n
\n\n

那么显然我们应该将其理解为“accumulator_set 生命周期内的增量操作”,而不是可恢复/持久中的“增量”。

\n\n

这看起来确实是一个不错的功能请求,库作者愿意提供帮助?

\n