Modify ↓
Opened 3 years ago
Closed 3 years ago
#22139 closed defect (fixed)
[PATCH] Significantly reduce allocations in NodeElement
Reported by: | taylor.smock | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 22.06 |
Component: | Core | Version: | |
Keywords: | performance | Cc: |
Description (last modified by )
-
src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java index 69b05c84b6..2b6852d7ba 100644
a b import java.awt.Rectangle; 7 7 import java.awt.Stroke; 8 8 import java.util.Objects; 9 9 import java.util.Optional; 10 import java.util.stream.IntStream;11 10 12 11 import org.openstreetmap.josm.data.osm.INode; 13 12 import org.openstreetmap.josm.data.osm.IPrimitive; … … public class NodeElement extends StyleElement { 350 349 } 351 350 } 352 351 353 private static int max(int... elements) { 354 return IntStream.of(elements).max().orElseThrow(IllegalStateException::new); 352 private static int max(int a, int b, int c, int d) { 353 // Profile before switching to a stream/int[] array 354 // This was 66% give or take for painting nodes in terms of memory allocations 355 // and was ~17% of the CPU allocations. By not using a vararg method call, we avoid 356 // the creation of an array. By avoiding both streams and arrays, the cost for this method is negligible. 357 // This means that this saves about 7% of the CPU cycles during map paint, and about 20% 358 // of the memory allocations during map paint. 359 return Math.max(a, Math.max(b, Math.max(c, d))); 355 360 } 356 361 357 362 @Override
I'm planning on applying this Monday, June 20th.
Attachments (0)
Change History (4)
comment:1 by , 3 years ago
Description: | modified (diff) |
---|
comment:2 by , 3 years ago
Description: | modified (diff) |
---|---|
Summary: | [PATCH] Significantly reduce allocations in NodeElement and StyledMapRenderer → [PATCH] Significantly reduce allocations in NodeElement |
comment:3 by , 3 years ago
Description: | modified (diff) |
---|
comment:4 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
In 18502/josm: