From 3652a69255ca1be4328281e51fb406750c63c0f2 Mon Sep 17 00:00:00 2001 From: Joshua Holmer Date: Mon, 2 May 2016 15:48:21 -0400 Subject: [PATCH] Optimize filter mode 1 --- Cargo.toml | 3 --- src/png.rs | 12 ++++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6c0ef8c1..3c5ae8d0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,9 +21,6 @@ name = "oxipng" path = "src/main.rs" doc = false -[profile.release] -debug = true - [dependencies] bit-vec = "^0.4.2" byteorder = "^0.5.0" diff --git a/src/png.rs b/src/png.rs index 5c307496..e694bdfe 100644 --- a/src/png.rs +++ b/src/png.rs @@ -1073,12 +1073,12 @@ fn filter_line(filter: u8, bpp: usize, data: &[u8], last_line: &[u8]) -> Vec filtered.extend_from_slice(data); } 1 => { - for (i, byte) in data.iter().enumerate() { - filtered.push(match i.checked_sub(bpp) { - Some(x) => byte.wrapping_sub(data[x]), - None => *byte, - }); - } + filtered.extend_from_slice(&data[0..bpp]); + filtered.extend_from_slice(&data.iter() + .skip(bpp) + .zip(data.iter()) + .map(|(cur, last)| cur.wrapping_sub(*last)) + .collect::>()); } 2 => { if last_line.is_empty() {