From b3420d93483ab47b2df6934f816ce6af254adea7 Mon Sep 17 00:00:00 2001 From: Yann Moisan Date: Tue, 23 Jan 2024 19:58:10 +0100 Subject: [PATCH] improvements (#521) - inline computeIfAbsent - replace arraycopy by copyOfRange Co-authored-by: Yann Moisan --- .../onebrc/CalculateAverage_YannMoisan.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/dev/morling/onebrc/CalculateAverage_YannMoisan.java b/src/main/java/dev/morling/onebrc/CalculateAverage_YannMoisan.java index 0e9b5cf..03370e6 100644 --- a/src/main/java/dev/morling/onebrc/CalculateAverage_YannMoisan.java +++ b/src/main/java/dev/morling/onebrc/CalculateAverage_YannMoisan.java @@ -104,10 +104,7 @@ public class CalculateAverage_YannMoisan { break; field[fieldCurrentIndex++] = fieldByte; } - var dst = new byte[fieldCurrentIndex]; - System.arraycopy(field, 0, dst, 0, fieldCurrentIndex); - var fieldStr = new Location(dst); - // System.arraycopy(field, 0, dst, 0, fieldCurrentIndex); + var fieldStr = new Location(Arrays.copyOfRange(field, 0, fieldCurrentIndex)); var number = 0; var sign = 1; while (bb.position() < limit) { @@ -119,9 +116,15 @@ public class CalculateAverage_YannMoisan { else if (numberByte != '.') number = number * 10 + (numberByte - '0'); } - stats.computeIfAbsent(fieldStr, - k -> new Stat()) - .update(sign * number); + var v = stats.get(fieldStr); + if (v == null) { + var vv = new Stat(); + vv.update(sign * number); + stats.put(fieldStr, vv); + } + else { + v.update(sign * number); + } } return stats;