diff options
| author | Yann Moisan <yamo93@gmail.com> | 2024-01-23 19:58:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-23 19:58:10 +0100 |
| commit | b3420d93483ab47b2df6934f816ce6af254adea7 (patch) | |
| tree | 1b72d38c09832dd15f4c294b5bfd6e9b1f61823f /src/main/java/dev/morling/onebrc/CalculateAverage_YannMoisan.java | |
| parent | c886aaba3498fbc381a009d0f0a466a20194992b (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/onebrc/CalculateAverage_YannMoisan.java')
| -rw-r--r-- | src/main/java/dev/morling/onebrc/CalculateAverage_YannMoisan.java | 17 |
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; |
