如今,每个人都在关注保护用户隐私及其数据.能够对数据进行统计分析而不实际保持数据样本的时间超过必要时间是朝着正确方向迈出的坚实一步.
boost库中累加器的概念看起来非常适合实现它.
The Accumulators Framework is framework for performing incremental
calculations. Usage of the framework follows the following pattern:Users push data into the
accumulator_set<>
object one sample at a
time.The
accumulator_set<>
computes the requested quantities in the
most efficient method possible, resolving dependencies between
requested calculations, possibly caching intermediate results.
只有一个大问题.我不知道如何序列化累加器实例,以便我可以持久化它而无需在应用程序启动之间保留样本数据.
如何创建实例并恢复其应用新样本并继续其增量计算所需的所有必要参数?我不想从头开始,也不想保留以前的样品.
最佳答案 我认为你误解了accumulator_set如何在内部工作.
它不保留样品.实际上,如果您只是为’min’和’max’统计信息设置了参数,那么将要保留的唯一状态是结果类型的2个值.
一些其他统计数据保持更多状态(例如直方图,百分位数等).
因为accumulator_set<>首先支持序列化¹,在样品保留方面应该没问题.
¹我没有检查过
UPDATE
好的.我现在看了大约一个小时的事情,我认为没有理由认为序列化得到支持或易于实现.
我见过的最多的是功能是可复制的.
但是没有可以从外部调整的分配器,所以你也不能利用说内存映射文件.
这使我得出结论,你想要的不是图书馆的一个特色.那么,文档介绍的地方:
Boost.Accumulators is both a library for incremental statistical computation as well as an extensible framework for incremental calculation in general.
然后显然我们应该把它理解为“在accumulator_set的生命周期内的增量操作”,而不是“可增量”,如可恢复/可持续的.
它似乎是图书馆作者想要帮助的一个很好的功能请求?