aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2025-11-26 19:35:00 +0100
committerDaniel Schadt <kingdread@gmx.de>2025-11-26 19:35:00 +0100
commit58536c0aac7187a697ebfa56d8e4dd94b4a59cbe (patch)
tree432c00b11bc746b0a7cf29140385ec1331e57342
parent013dc01683c42177e132847475c8b57d1a67fc14 (diff)
downloadhittekaart-58536c0aac7187a697ebfa56d8e4dd94b4a59cbe.tar.gz
hittekaart-58536c0aac7187a697ebfa56d8e4dd94b4a59cbe.tar.bz2
hittekaart-58536c0aac7187a697ebfa56d8e4dd94b4a59cbe.zip
make merge_heat_counter more efficientHEADmaster
Accessing the underlying buffers directly and iterating over them is more efficient (and gives the compiler more options to optimize) than the dance with get_pixel_mut. On my local tests with 119 tracks, this shaves off ~30 seconds (from 90 seconds down to 60 seconds).
-rw-r--r--hittekaart/src/renderer/heatmap.rs5
1 files changed, 2 insertions, 3 deletions
diff --git a/hittekaart/src/renderer/heatmap.rs b/hittekaart/src/renderer/heatmap.rs
index 187c8f3..38a1543 100644
--- a/hittekaart/src/renderer/heatmap.rs
+++ b/hittekaart/src/renderer/heatmap.rs
@@ -118,9 +118,8 @@ fn render_line<P: Pixel>(
fn merge_heat_counter(base: &mut HeatCounter, overlay: &HeatCounter) {
for (tx, ty, source) in overlay.enumerate_tiles() {
let target = base.tile_mut(tx, ty);
- for (x, y, source) in source.enumerate_pixels() {
- let target = target.get_pixel_mut(x, y);
- target[0] += source[0];
+ for (t, s) in target.iter_mut().zip(source.iter()) {
+ *t += *s;
}
}
}