aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/morling
diff options
context:
space:
mode:
authorYann Moisan <yamo93@gmail.com>2024-01-23 19:58:10 +0100
committerGitHub <noreply@github.com>2024-01-23 19:58:10 +0100
commitb3420d93483ab47b2df6934f816ce6af254adea7 (patch)
tree1b72d38c09832dd15f4c294b5bfd6e9b1f61823f /src/main/java/dev/morling
parentc886aaba3498fbc381a009d0f0a466a20194992b (diff)
improvements (#521)
- inline computeIfAbsent - replace arraycopy by copyOfRange Co-authored-by: Yann Moisan <yann@zen.ly>
Diffstat (limited to 'src/main/java/dev/morling')
-rw-r--r--src/main/java/dev/morling/onebrc/CalculateAverage_YannMoisan.java17
1 files 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;