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 在 算法 中
1,106 每月下载量
用于 4 crates
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,您将得到每秒排列数。