Use windows function for minor improvement

This commit is contained in:
Andrew 2022-11-15 23:15:18 +13:00
parent aacc35e4af
commit f0ecab3aa2

View file

@ -382,8 +382,8 @@ impl PngImage {
for try_filter in try_filters { for try_filter in try_filters {
try_filter.filter_line(bpp, line.data, last_line, &mut f_buf); try_filter.filter_line(bpp, line.data, last_line, &mut f_buf);
let mut set = bitarr![0; 0x10000]; let mut set = bitarr![0; 0x10000];
for i in 1..f_buf.len() { for pair in f_buf.windows(2) {
let bigram = (f_buf[i - 1] as usize) << 8 | f_buf[i] as usize; let bigram = (pair[0] as usize) << 8 | pair[1] as usize;
set.set(bigram, true); set.set(bigram, true);
} }
let size = set.count_ones(); let size = set.count_ones();
@ -401,8 +401,8 @@ impl PngImage {
for try_filter in try_filters { for try_filter in try_filters {
try_filter.filter_line(bpp, line.data, last_line, &mut f_buf); try_filter.filter_line(bpp, line.data, last_line, &mut f_buf);
counts.clear(); counts.clear();
for i in 1..f_buf.len() { for pair in f_buf.windows(2) {
let bigram = (f_buf[i - 1] as u16) << 8 | f_buf[i] as u16; let bigram = (pair[0] as u16) << 8 | pair[1] as u16;
counts.entry(bigram).and_modify(|e| *e += 1).or_insert(1); counts.entry(bigram).and_modify(|e| *e += 1).or_insert(1);
} }
let size = counts.values().fold(0, |acc, &x| acc + ilog2i(x)) as i32; let size = counts.values().fold(0, |acc, &x| acc + ilog2i(x)) as i32;