时间图

[bsd3型,图书馆,未分类的][建议标签]

下载

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

  • 没有候选人
版本[RSS(RSS)] 0.0.0,0.0.1,0.0.2,0.0.3,0.0.4,0.0.5,0.0.6,0.0.7(信息)
依赖关系 基础(>=4.8 && <5),容器,集中,可散列的,列表-t,stm公司,stm容器,时间,无序控制器[细节]
许可证 BSD-3条款
版权 版权所有(c)2018 Athan Clark
作者 阿森·克拉克
维护人员 athan.clark@localcooking.com
主页 https://github.com/athanclark/timemap#自述文件
Bug跟踪器 https://github.com/athanclark/timemap/问题
源回购 头部:git克隆https://github.com/athanclark/timemap
已上传 通过阿桑克拉克2018年4月6日T07:58:04Z
分配
反向依赖关系 1直接,0间接[细节]
下载 总计4495人(过去30天内有15人)
评级 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 可用文档[生成日志]
上次成功报告时间:2018年4月14日[所有1个报告]

timemap-0.0.7自述文件

[返回包描述]

时间图

可变的数据。哈希图-类似结构,其中每个实体都被隐式索引到他们最后修改的时间。适用于键控缓存。

用法

导入合格数据。TimeMap作为TM进口管制。同时发生的。STM公司主::IO()main=做--创建新的空引用mapRef<-原子TM.newTimeMap--在映射中插入新的键/值对。请注意--`someKey`应实现`Hashable`。这也是--将值的创建时间设置为“现在”。TM.insert someKey 0地图参考--将“someKey”的值调整为“1”。请注意--还将值的创建时间重置为“现在”。TM.adjust(+1)someKey映射参考--等一下线程延迟1000000--删除所有早于1秒的值。原子$TM.filterFromNow 1 mapRef--将返回`Nothing`原子$TM.lookup someKey mapRef返回()

它是如何工作的

有两个内部映射TimeMap k时间映射ka以下为:

  • “时间索引”地图参考:TVar(映射UTC时间(哈希集k))
  • 可变值映射:STM集装箱。地图。映射k(UTC时间,a)

插入

插入新值时,首先对哈希表执行查找,以查看键已存在:

  • 如果没有,请将当前时间和元素插入可变映射。然后,插入钥匙作为值,并且时间作为进入的关键时间索引多重映射。
  • 如果是,请在做与第一颗子弹相同的事情。

查找

这不需要创建新数据,因此不需要完整数据IO(输入输出)它所做的就是在可变映射中查找键。

过滤

要筛选出所有早于某个时间的条目,必须使用数据。地图.split查找函数将时间索引多重映射拆分为要从中删除的条目主容器和要保留的容器。你只是写入变量你想要的地图要保留,但对于要删除的,您需要获取所有元素属于那张地图。然后,对于每个需要删除的键,我们从主容器。令人惊讶的是,无论地图的大小。

如何运行测试

烟囱试验

基准

stack bench--benchmark-arguments=“--output profile.html”

您也可以在我的方框中查看结果在这里.