#list #algorithm #reference #generic #applications #parallel #permutator

bin+lib permutate

通用的排列器,可排列单个和多个列表

8 个版本

使用旧的 Rust 2015

0.3.2 2017年6月3日
0.3.1 2017年6月3日
0.2.0 2016年12月24日
0.1.3 2016年9月9日

#941算法

Download history 264/week @ 2024-03-06 250/week @ 2024-03-13 246/week @ 2024-03-20 235/week @ 2024-03-27 370/week @ 2024-04-03 250/week @ 2024-04-10 159/week @ 2024-04-17 228/week @ 2024-04-24 242/week @ 2024-05-01 267/week @ 2024-05-08 191/week @ 2024-05-15 263/week @ 2024-05-22 310/week @ 2024-05-29 239/week @ 2024-06-05 303/week @ 2024-06-12 177/week @ 2024-06-19

1,106 每月下载量
用于 4 crates

MIT 许可证

45KB
729

Permutate

Permutate 存在为库和应用程序,可使用基于 Rust 的原始算法对列表进行排列,包括单个列表和列表的列表。如果您正在处理的数据不适合使用引用,那么这个工具不适合您。它主要是为了包含在 Rust 实现的 GNU Parallel 程序中而开发的,该程序提供排列输入列表的能力。

源代码文档可在 Docs.rs 上找到。

应用

遵循 Rust 和 UNIX 哲学,我也将其作为一个简单的应用程序发布,以便将排列的能力带到命令行,因为 shell 很重要。语法非常类似于 GNU Parallel,因此 GNU Parallel 的用户将很快适应这个命令。

$ permutate A B ::: C D ::: E F
A C E
A C F
A D E
A D F
B C E
B C F
B D E
B D F
$ permutate -n A B ::: C D ::: E F
ACE
ACF
ADE
ADF
BCE
BCF
BDE
BDF

其他接受的语法有

$ permutate -f file file :::+ arg arg :::: file file ::::+ file file ::: arg arg

基准测试

它是多快?在我的 i5-2410M 笔记本电脑(四核 2.3 GHz Sandybridge 移动 CPU)上,使用 Gentoo Linux 和性能管理器,我平均每秒可以处理 2,140,000 个字符串引用排列。如果扩展到所有 CPU 核心,我可以达到大约每秒 800 万个排列。对于一个笔记本电脑来说,这已经很不错了。

如果您想比较您的处理器/实现的性能,这是我进行测试的方法

for char in A B C D E F G H I J; do echo $char >> A; done
time target/release/permutate --benchmark -n -f A :::: A :::: A :::: A :::: A :::: A :::: A :::: A

这将生成 10,000,000 个排列并打印完成该过程所需的时间。将完成时间除以 10,000,000,您将得到每秒排列数。

没有运行时依赖