Skip to content

Commit 5ce558c

Browse files
authored
Merge pull request #10050 from CrazyRoka/uniq-optimize-case-sensitive
uniq: optimize memory usage for ignore-case comparison
2 parents 50f83a6 + 28deca2 commit 5ce558c

File tree

1 file changed

+1
-28
lines changed

1 file changed

+1
-28
lines changed

src/uu/uniq/src/uniq.rs

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ struct Uniq {
6161
struct LineMeta {
6262
key_start: usize,
6363
key_end: usize,
64-
lowercase: Vec<u8>,
65-
use_lowercase: bool,
6664
}
6765

6866
macro_rules! write_line_terminator {
@@ -152,18 +150,7 @@ impl Uniq {
152150
return first_slice != second_slice;
153151
}
154152

155-
let first_cmp = if first_meta.use_lowercase {
156-
first_meta.lowercase.as_slice()
157-
} else {
158-
first_slice
159-
};
160-
let second_cmp = if second_meta.use_lowercase {
161-
second_meta.lowercase.as_slice()
162-
} else {
163-
second_slice
164-
};
165-
166-
first_cmp != second_cmp
153+
!first_slice.eq_ignore_ascii_case(second_slice)
167154
}
168155

169156
fn key_bounds(&self, line: &[u8]) -> (usize, usize) {
@@ -230,20 +217,6 @@ impl Uniq {
230217
let (key_start, key_end) = self.key_bounds(line);
231218
meta.key_start = key_start;
232219
meta.key_end = key_end;
233-
234-
if self.ignore_case && key_start < key_end {
235-
let slice = &line[key_start..key_end];
236-
if slice.iter().any(|b| b.is_ascii_uppercase()) {
237-
meta.lowercase.clear();
238-
meta.lowercase.reserve(slice.len());
239-
meta.lowercase
240-
.extend(slice.iter().map(|b| b.to_ascii_lowercase()));
241-
meta.use_lowercase = true;
242-
return;
243-
}
244-
}
245-
246-
meta.use_lowercase = false;
247220
}
248221

249222
fn read_line(

0 commit comments

Comments
 (0)