aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev')
-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;