Avoid allocations in some compare() methods
Christoph Dreis
christoph.dreis at freenet.de
Sun Apr 23 18:30:23 UTC 2017
Hey,
I've just noticed that some compareTo() or compare() implementations with
primitives use Long.valueOf(x).compareTo(Long.valueOf(y)) instead of simply
calling Long.compare(x, y);
The attached patch changes those occurrences to avoid the possibility of
allocations here - although I guess most of the time the caches of Long and
Integer will be used anyhow. What do you think of the change?
Would be happy if this is sponsored (and earns a "Contributed-By" if
considered by any chance)
Cheers,
Christoph
============== PATCH ================
diff --git
a/jmh-core/src/main/java/org/openjdk/jmh/profile/AbstractPerfAsmProfiler.jav
a
b/jmh-core/src/main/java/org/openjdk/jmh/profile/AbstractPerfAsmProfiler.jav
a
---
a/jmh-core/src/main/java/org/openjdk/jmh/profile/AbstractPerfAsmProfiler.jav
a
+++
b/jmh-core/src/main/java/org/openjdk/jmh/profile/AbstractPerfAsmProfiler.jav
a
@@ -389,8 +389,7 @@
Collections.sort(regions, new Comparator<Region>() {
@Override
public int compare(Region o1, Region o2) {
- return Long.valueOf(o2.getEventCount(events, mainEvent)).
- compareTo(o1.getEventCount(events, mainEvent));
+ return Long.compare(o2.getEventCount(events, mainEvent),
o1.getEventCount(events, mainEvent));
}
});
diff --git
a/jmh-core/src/main/java/org/openjdk/jmh/profile/StackProfiler.java
b/jmh-core/src/main/java/org/openjdk/jmh/profile/StackProfiler.java
--- a/jmh-core/src/main/java/org/openjdk/jmh/profile/StackProfiler.java
+++ b/jmh-core/src/main/java/org/openjdk/jmh/profile/StackProfiler.java
@@ -288,7 +288,7 @@
@Override
public int compare(Thread.State s1, Thread.State s2) {
- return
Long.valueOf(stateSize(s2)).compareTo(stateSize(s1));
+ return Long.compare(stateSize(s2), stateSize(s1));
}
});
diff --git
a/jmh-core/src/main/java/org/openjdk/jmh/runner/WorkloadParams.java
b/jmh-core/src/main/java/org/openjdk/jmh/runner/WorkloadParams.java
--- a/jmh-core/src/main/java/org/openjdk/jmh/runner/WorkloadParams.java
+++ b/jmh-core/src/main/java/org/openjdk/jmh/runner/WorkloadParams.java
@@ -123,7 +123,7 @@
@Override
public int compareTo(Value o) {
- return Integer.valueOf(order).compareTo(o.order);
+ return Integer.compare(order, o.order);
}
@Override
diff --git a/jmh-core/src/main/java/org/openjdk/jmh/util/Multisets.java
b/jmh-core/src/main/java/org/openjdk/jmh/util/Multisets.java
--- a/jmh-core/src/main/java/org/openjdk/jmh/util/Multisets.java
+++ b/jmh-core/src/main/java/org/openjdk/jmh/util/Multisets.java
@@ -58,7 +58,7 @@
Collections.sort(sorted, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
- return
Long.valueOf(set.count(o2)).compareTo(set.count(o1));
+ return Long.compare(set.count(o2), set.count(o1));
}
});
return sorted;
More information about the jmh-dev
mailing list