﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
22030	[PATCH] Replace Utils.isStripEmpty with Utils.isBlank in AbstractPrimitive#put	taylor.smock	team	"I've been doing some profiling with Vector tiles, and I've noticed that `isStripEmpty` makes a significant number of allocations.

Looking at the profiler output, it looks like `Utils.isBlank` effectively gets optimized away (tested on Java 8/17). Does anyone know of a reason to keep `Utils.isStripEmpty`?

{{{#!diff
diff --git a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
index b4b1e1e339..92b1572a11 100644
--- a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
@@ -584,7 +584,7 @@ public abstract class AbstractPrimitive implements IPrimitive, IFilterablePrimit
     @Override
     public void put(String key, String value) {
         Map<String, String> originalKeys = getKeys();
-        if (key == null || Utils.isStripEmpty(key))
+        if (key == null || Utils.isBlank(key))
             return;
         else if (value == null) {
             remove(key);
}}}

[[Image(flamegraph_isStripEmpty.png, 100%, title=""Utils#isStripEmpty, Java 8"")]]
Utils#isStripEmpty, Java 8

Allocations:
* Utils#isStripEmpty: 112 MB
* Arrays#copyOf: 57 MB
* AbstractPrimitive#getKeys: 25 MB
* String[]: 4 MB

[[Image(flamegraph_isBlank_Java8.png, 100%, title=""Utils#isBlank, Java 8"")]]
Utils#isBlank, Java 8

Allocations:
* Arrays#copyOf: 61 MB
* AbstractPrimitive#getKeys: 3.5 MB
* String[]: 2.3 MB

[[Image(flamegraph_isBlank_Java17.png, 100%, title=""Utils#isBlank, Java 17"")]]
Utils#isBlank, Java 17

Allocations:
* Arrays#copyOf: 21 MB
* AbstractPrimitive#getKeys: 43 MB
* String[]: 12 MB


There is a bit of jitter, but the primary cost of AbstractPrimitive#put is from `Utils#isStripEmpty`."	defect	closed	normal	22.07	Core		wontfix	performance	
