#unique #filtering #logging

bin+lib runiq-lib

一种高效地从输入中过滤重复行的方法,类似于 uniq

1 个稳定版本

1.2.2 2021 年 9 月 8 日

#1008文本处理


2 crates 中使用

MIT 许可证

24KB
360

runiq

Crates.io Build Status

本项目提供了一种高效的方法(在时间和空间上)从文本输入中过滤重复条目(行)。本项目源自 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