Skip to content

Commit c4fed3f

Browse files
committed
replace memchr with bytecount for improved performance
1 parent 5b54e08 commit c4fed3f

8 files changed

Lines changed: 15 additions & 8 deletions

File tree

Cargo.lock

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

fuzz/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/uu/head/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ path = "src/head.rs"
1919
doctest = false
2020

2121
[dependencies]
22+
bytecount = { workspace = true }
2223
clap = { workspace = true }
24+
fluent = { workspace = true }
2325
memchr = { workspace = true }
2426
thiserror = { workspace = true }
2527
uucore = { workspace = true, features = [
@@ -28,7 +30,6 @@ uucore = { workspace = true, features = [
2830
"lines",
2931
"fs",
3032
] }
31-
fluent = { workspace = true }
3233

3334
[[bin]]
3435
name = "head"

src/uu/head/src/take.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ impl TakeAllLinesBuffer {
166166
self.partial_line = false;
167167
let bytes_read = self.inner.fill_buffer(reader)?;
168168
// Count the number of lines...
169-
self.terminated_lines = memchr_iter(separator, self.inner.remaining_buffer()).count();
169+
self.terminated_lines = bytecount::count(self.inner.remaining_buffer(), separator);
170170
if let Some(last_char) = self.inner.remaining_buffer().last() {
171171
if *last_char != separator {
172172
self.partial_line = true;

src/uu/sort/Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ i18n-collator = ["uucore/i18n-collator"]
2727
[dependencies]
2828
bigdecimal = { workspace = true }
2929
binary-heap-plus = { workspace = true }
30+
bytecount = { workspace = true }
3031
clap = { workspace = true }
3132
compare = { workspace = true }
33+
fluent = { workspace = true }
34+
foldhash = { workspace = true }
3235
itertools = { workspace = true }
3336
memchr = { workspace = true }
3437
rand = { workspace = true }
@@ -44,8 +47,6 @@ uucore = { workspace = true, features = [
4447
"i18n-collator",
4548
"i18n-datetime",
4649
] }
47-
fluent = { workspace = true }
48-
foldhash = { workspace = true }
4950

5051
[target.'cfg(not(any(target_os = "redox", target_os = "wasi")))'.dependencies]
5152
ctrlc = { workspace = true }

src/uu/sort/src/chunks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ fn parse_lines<'a>(
286286
let count = if read.is_empty() {
287287
1
288288
} else {
289-
memchr_iter(separator, read).count() + 1
289+
bytecount::count(read, separator) + 1
290290
};
291291
exact_line_count = Some(count);
292292
estimated = count;

src/uu/tail/Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@ path = "src/tail.rs"
2020
doctest = false
2121

2222
[dependencies]
23+
bytecount = { workspace = true }
2324
clap = { workspace = true }
25+
fluent = { workspace = true }
2426
memchr = { workspace = true }
25-
uucore = { workspace = true, features = ["fs", "parser-size", "signals"] }
2627
same-file = { workspace = true }
27-
fluent = { workspace = true }
28+
uucore = { workspace = true, features = ["fs", "parser-size", "signals"] }
2829

2930
[target.'cfg(not(target_os = "wasi"))'.dependencies]
3031
libc = { workspace = true }

src/uu/tail/src/chunks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ impl LinesChunk {
371371
/// assert_eq!(2, chunk.count_lines());
372372
/// ```
373373
fn count_lines(&self) -> usize {
374-
memchr::memchr_iter(self.delimiter, self.get_buffer()).count()
374+
bytecount::count(self.get_buffer(), self.delimiter)
375375
}
376376

377377
/// Creates a new [`LinesChunk`] from an existing one with an offset in lines. The new chunk

0 commit comments

Comments
 (0)