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

时间:2015-08-29 19:02:11

标签: c++ boost

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

boost 库中累加器的概念看起来非常适合实现它。

  

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

     

用户将数据推送到accumulator_set<>个对象中的一个样本   时间。

     

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

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

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

1 个答案:

答案 0 :(得分:2)

我认为你误解了accumulator_set如何在内部工作。

它不保留样品。实际上,如果您只是为'min'和'max'统计信息设置了参数,那么将保留的唯一状态是结果类型的2个值。

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

由于accumulator_set<>首先支持序列化¹,因此样本保留应该没问题。

¹我没有检查过

<强>更新

好。我现在看了大约一个小时的事情,我认为没有理由认为序列化得到支持或易于实现。

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

但是没有可以从外部调整的分配器,所以你也不能利用说内存映射文件。

这使我得出结论,你想要的是不是库的功能。那么,文档介绍的地方:

  

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

然后显然我们应该将其视为“在accumulator_set的生命周期内的增量操作”,而不是“可恢复/可持续的”增量操作。

这似乎是一个很好的功能请求,图书馆作者想要帮助吗?

相关问题