1 个稳定版本
1.2.2 | 2021 年 9 月 8 日 |
---|
#1008 在 文本处理
在 2 crates 中使用
24KB
360 行
runiq
本项目提供了一种高效的方法(在时间和空间上)从文本输入中过滤重复条目(行)。本项目源自 neek,但针对速度和内存进行了优化。根据您的数据和您希望在速度和内存使用之间做出的权衡,支持多种过滤选项。有关更详细的说明,请参阅相关的 博客文章。
安装
此工具将通过 Crates.io 提供,因此您可以直接使用 cargo
安装它
$ cargo install runiq
如果您只想获取预构建的二进制文件,您可能可以直接从 GitHub 上最新版本的最新发布中下载适用于您的架构的正确二进制文件 这里。二进制列表可能不完整,所以请在您的设置中缺少(如果附加适当的二进制文件,则获得额外加分)。
示例
$ cat << EOF >> input.txt
> this is a unique line
> this is a duplicate line
> this is another unique line
> this is a duplicate line
> this is a duplicate line
> EOF
$ cat input.txt
this is a unique line
this is a duplicate line
this is another unique line
this is a duplicate line
this is a duplicate line
$ runiq input.txt
this is a unique line
this is a duplicate line
this is another unique line
比较
以下是 runiq
与其他过滤唯一值的方法的比较
工具 | 标志 | 耗时 | 峰值内存 |
---|---|---|---|
neek | N/A | 55.8s | 313MB |
sort | -u | 595s | 9.07GB |
uq | N/A | 32.3s | 1.66GB |
runiq | -f digest | 17.8s | 64.6MB |
runiq | -f naive | 26.3s | 1.62GB |
runiq | -f bloom | 36.8s | 13MB |
上述数字基于从以下文件中过滤唯一值
File size: 3,290,971,321 (~3.29GB)
Line count: 5,784,383
Unique count: 2,715,727
Duplicates: 3,068,656
依赖项
~3–4MB
~60K SLoC