4 个版本 (2 个重大更新)
0.3.0 | 2022 年 5 月 28 日 |
---|---|
0.2.1 | 2022 年 5 月 28 日 |
0.2.0 | 2018 年 11 月 26 日 |
0.1.0 | 2018 年 10 月 13 日 |
#779 in 文本处理
在 2 crates 中使用
24KB
478 行
loe
非常快速,另一个用 Rust 编写的行结束符(CRLF <-> LF)转换器。它既作为库也作为可运行的程序分发。考虑到性能(在字节缓冲区而不是字符串上工作)。
功能
- CRLF -> LF 和 LF -> CRLF 转换
- 输入编码检查(Ascii,UTF-8,易于扩展)
- 基本上就是这样
用法
命令行
$ cargo install loe
$ loe --help # prints usage
$ loe -o unix.txt dos.txt
库
在 Cargo.toml
[dependencies]
loe = "0.3"
在你的源文件中
extern crate loe;
use std::io::Cursor;
use loe::{process, Config};
fn convert(input: String) -> String {
let mut input = Cursor::new(input);
let mut output = Cursor::new(Vec::new());
process(&mut input, &mut output, Config::default());
String::from_utf8(output.into_inner()).unwrap()
}
查看 文档 了解更多信息!
基准测试
基准测试使用 hyperfine 工具和以下命令执行:hyperfine '<command>' --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches'
。由于 dos2unix 默认会检查文件是否为二进制文件,因此 loe 命令使用 -e ascii
,因为它在 loe 中模仿了这种行为。
硬件和软件配置
键 | 值 |
---|---|
文件 bench.txt |
144 MB,200k 行,仅限 ascii |
处理器 | Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz |
磁盘 | Samsung SSD 840 |
内核 | 4.20.5-arch1-1-ARCH |
loe | 0.2.0 |
dos2unix | 7.4.0 |
hyperfine | 1.3.0 |
结果
命令 | 平均 [ms] | 最小…最大 [ms] |
---|---|---|
loe-o out.txt bench.txt |
1011.2 ± 59.9 | 968.5…1153.3 |
loe-e ascii-o out.txt bench.txt |
962.9 ± 14.2 | 950.3…996.6 |
dos2unix-n bench.txt out.txt |
1358.8 ± 94.1 | 1214.3…1502.9 |
loe-e ascii-n crlf-o out.txt bench.txt |
1105.6 ± 18.0 | 1077.4…1135.2 |
unix2dos-n bench.txt out.txt |
1763.6 ± 118.5 | 1636.4…1985.2 |
loe-e ascii-o bench.txt bench.txt |
1086.4 ± 20.3 | 1050.0…1129.2 |
dos2unix 基准测试.txt |
1354.0 ± 81.1 | 1246.4…1484.0 |
tr-d'\r' <bench.txt>out.txt |
472.4 ± 4.3 | 466.8…478.9 |
平均来说,loe 比 dos2unix 快约 1.4 倍。请注意,虽然 dos2unix 提供了比 loe 更多的功能,但在 loe 中实现它们不应过多影响性能。
许可证
loe 采用 MIT 许可证。您可以自由使用、贡献或传播。
依赖关系
约 1MB