25% speed improvement in filter mode 2 by using iter instead of for
This commit is contained in:
parent
c0fddfe4e6
commit
32c35596ea
3 changed files with 12 additions and 7 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
**Version 0.6.1 (unreleased)**
|
**Version 0.6.1 (unreleased)**
|
||||||
- Minor compression improvement on interlaced images
|
- Minor compression improvement on interlaced images
|
||||||
|
- Performance optimizations
|
||||||
|
|
||||||
**Version 0.6.0**
|
**Version 0.6.0**
|
||||||
- Fix issue where output directory would not be created if it did not exist
|
- Fix issue where output directory would not be created if it did not exist
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@ name = "oxipng"
|
||||||
path = "src/main.rs"
|
path = "src/main.rs"
|
||||||
doc = false
|
doc = false
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
debug = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bit-vec = "^0.4.2"
|
bit-vec = "^0.4.2"
|
||||||
byteorder = "^0.5.0"
|
byteorder = "^0.5.0"
|
||||||
|
|
|
||||||
15
src/png.rs
15
src/png.rs
|
|
@ -1081,13 +1081,14 @@ fn filter_line(filter: u8, bpp: usize, data: &[u8], last_line: &[u8]) -> Vec<u8>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
2 => {
|
2 => {
|
||||||
for (i, byte) in data.iter().enumerate() {
|
if last_line.is_empty() {
|
||||||
if last_line.is_empty() {
|
filtered.extend_from_slice(data);
|
||||||
filtered.push(*byte);
|
} else {
|
||||||
} else {
|
filtered.extend_from_slice(&data.iter()
|
||||||
filtered.push(byte.wrapping_sub(last_line[i]));
|
.zip(last_line.iter())
|
||||||
};
|
.map(|(cur, last)| cur.wrapping_sub(*last))
|
||||||
}
|
.collect::<Vec<u8>>());
|
||||||
|
};
|
||||||
}
|
}
|
||||||
3 => {
|
3 => {
|
||||||
for (i, byte) in data.iter().enumerate() {
|
for (i, byte) in data.iter().enumerate() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue