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