一种自压缩、无依赖的trie基
bytetrie的Python项目详细描述
比特特里
一个快速的、无依赖关系的、自压缩的trie,以256为基数,用纯python编写。在
Bytetrie允许在大量的键库中快速搜索前缀。每把钥匙都可以 与任意数据关联。它的特点是快速查找时间,但代价是 昂贵的插入。如果可以预先填充数据,则最好使用Bytetrie。 然而,由于其带内压缩,它也可以用于飞行 更新。在
钥匙
键是字节串。因此,trie中的每个节点最多可以有256个 儿童(基数)。密钥与utf-8和其他编码一起工作得很好 因为编码是一致的和确定的。也就是说,石墨烯簇 总是以相同的字节序列编码——即使标准允许 模棱两可。通常,只要使用相同的编码器 插入和查找。在
因为unicode字符串中的前缀搜索是 {bytetas}由unicode层^组成。在
数据
Bytetrie可以将任意python对象与键相关联。数据(或者更确切地说是 参考文献)保存在树上。不进行进一步处理。在
此外,bytrie允许多值尝试。然后每个键都与 任意对象的序列。在
性能
尽管在纯python中bytetrie是fast。筛选
geonames“所有国家”数据集
以Vienna
开头的地方只需要512微秒
搜索12041359个地方的毫秒。相比之下,热身
在同一个数据集中进行ripgrep搜索需要三个数量级(400ms)
在同一台机器上。在
另一方面,建造trie大约需要20分钟,而且相当可观 记忆。此外,表演大多被收集所需的时间所压倒 终端节点。搜索越高,搜索结束(因此也就越多 结果前缀搜索产生)时间越长。有几个 低挂起的果实和进一步的性能改进是在 pipeline。在
依赖关系
没有。这就是重点。在
入门
通过pip安装bytetrie。在
pip install -U bytetrie
公共接口是ByteTrie
,有两个方法insert
和{Terminals
的列表,其中key
和
可以检索节点。在
贡献
如果您想为bytetrie
贡献力量,请随时向发送修补程序
弗里德尔网。或者,您可以在GitHub上发出pull请求
会被樱桃摘到我的树上。如果你有长远的计划
投稿给我一封邮件,让我可以访问孵化器存储库。在
Github用户
如果您在GitHub上访问此存储库,则您位于的镜像上 https://git.friedl.net/incubator/bytetrie。这面镜子会定期更新 我的其他GitHub镜像。在
就像我的其他孵化器项目一样,一旦我认为bytetrie
是合理的
稳定主目录树将移到GitHub。在
- 项目
标签: