diff --git a/src/uu/seq/BENCHMARKING.md b/src/uu/seq/BENCHMARKING.md index 3d6bcfc44..6324564c4 100644 --- a/src/uu/seq/BENCHMARKING.md +++ b/src/uu/seq/BENCHMARKING.md @@ -63,4 +63,18 @@ of system time). Simply wrapping `stdout` in a `BufWriter` increased performance by about 2 times for a floating point increment test case, leading to similar performance compared with GNU `seq`. +### Directly print strings + +As expected, directly printing a string: +```rust +stdout.write_all(separator.as_bytes())? +``` +is quite a bit faster than using format to do the same operation: +```rust +write!(stdout, "{separator}")? +``` + +The change above resulted in a ~10% speedup. + + [0]: https://github.com/sharkdp/hyperfine diff --git a/src/uu/seq/src/seq.rs b/src/uu/seq/src/seq.rs index 777c77e1a..36b0a6a9f 100644 --- a/src/uu/seq/src/seq.rs +++ b/src/uu/seq/src/seq.rs @@ -260,7 +260,7 @@ fn print_seq( let mut is_first_iteration = true; while !done_printing(&value, &increment, &last) { if !is_first_iteration { - write!(stdout, "{separator}")?; + stdout.write_all(separator.as_bytes())?; } format.fmt(&mut stdout, &value)?; // TODO Implement augmenting addition. @@ -268,7 +268,7 @@ fn print_seq( is_first_iteration = false; } if !is_first_iteration { - write!(stdout, "{terminator}")?; + stdout.write_all(terminator.as_bytes())?; } stdout.flush()?; Ok(())