#sorting #parallel #unix #line

app sortpar

Unix排序,但并行执行

2个版本

0.1.1 2018年8月30日
0.1.0 2018年8月8日

#255 in #parallel

MIT 许可证

17KB
364

sortpar

sortpar 是一个命令行工具,可以并行地对文本文件进行排序。它是通过利用 rayon 库在切片上的实现来做到这一点的。

Build Status

安装

sortpar 需要使用 nightly Rust 编译器,因为它正在测试版本。您可以通过运行以下命令来安装它:

cargo +nightly install sortpar

这将将在您的机器上的 sp 二进制文件放置在 $HOME/.cargo/bin 目录中。您可以将其添加到 $PATH 变量中以便更容易访问。如果工具对没有 Rust 的系统用户也变得有用,计划提供更多安装选项。

用法

目前 sortpar 支持Unix sort命令的子集选项。您可以通过运行以下命令来列出它们:

sp --help

基准测试

有更多的基准测试会很好,但是也很难在多个案例中准确地衡量。仅为了给出目前性能的印象,我使用 Peter Norvig的大文本文件 进行了排序。警告,该链接指向一个6.2MB的文件。

使用 hyperfine,我得到了以下结果

Benchmark #1: sp big.txt

  Time (mean ± σ):     445.1 ms ±   7.6 ms    [User: 857.0 ms, System: 90.8 ms]

  Range (min … max):   436.6 ms … 457.4 ms
Benchmark #1: gsort --parallel=4 big.txt

  Time (mean ± σ):      2.604 s ±  0.023 s    [User: 2.550 s, System: 0.032 s]

  Range (min … max):    2.558 s …  2.632 s

为什么我没有在GNU sort基准测试中使用 LC_ALL=C?因为这会不公平地允许GNU sort避免UTF-8解码的开销。也许在未来 sortpar 也可以有这个选项。

问题

如果您遇到任何错误或想要添加功能,请随时提出问题。

许可证

MIT

依赖关系

~6.5MB
~134K SLoC