From 32bef5ac9635fb6467711f3b5e914807aa750105 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Sat, 6 Jan 2024 18:20:44 +0100 Subject: Updating leaderboard, formatting, avoiding OOME --- .../onebrc/CalculateAverage_imrafaelmerino.java | 39 +++++++++++----------- 1 file changed, 19 insertions(+), 20 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/dev/morling/onebrc/CalculateAverage_imrafaelmerino.java b/src/main/java/dev/morling/onebrc/CalculateAverage_imrafaelmerino.java index 8bded77..303e9ff 100644 --- a/src/main/java/dev/morling/onebrc/CalculateAverage_imrafaelmerino.java +++ b/src/main/java/dev/morling/onebrc/CalculateAverage_imrafaelmerino.java @@ -104,12 +104,11 @@ public class CalculateAverage_imrafaelmerino { } private static Map calculateStats(String file, - long chunkSize - ) + long chunkSize) throws IOException { try (var fileChannel = FileChannel.open(Paths.get(file), - StandardOpenOption.READ)) { + StandardOpenOption.READ)) { var stats = fileMemoryStream(fileChannel, chunkSize) .parallel() .map(p -> ManagedComputation.compute(() -> parse(p))) @@ -122,8 +121,7 @@ public class CalculateAverage_imrafaelmerino { } private static Map combine(Map xs, - Map ys - ) { + Map ys) { Map result = new HashMap<>(); @@ -165,23 +163,22 @@ public class CalculateAverage_imrafaelmerino { number = number * 10 + (numberByte - '0'); } stats.computeIfAbsent(fieldStr, - k -> new Stat()) - .update(sign * number); + k -> new Stat()) + .update(sign * number); } return stats; } private static Stream fileMemoryStream(FileChannel fileChannel, - long chunkSize - ) + long chunkSize) throws IOException { var spliterator = Spliterators.spliteratorUnknownSize(fileMemoryIterator(fileChannel, - chunkSize), - Spliterator.IMMUTABLE); + chunkSize), + Spliterator.IMMUTABLE); return StreamSupport.stream(spliterator, - false); + false); } private static Iterator fileMemoryIterator(FileChannel fileChannel, long chunkSize) throws IOException { @@ -199,16 +196,18 @@ public class CalculateAverage_imrafaelmerino { public ByteBuffer next() { try { var buffer = fileChannel.map(MapMode.READ_ONLY, - start, - Math.min(chunkSize, - size - start)); + start, + Math.min(chunkSize, + size - start)); var limmit = buffer.limit() - 1; - while (buffer.get(limmit) != '\n') limmit--; + while (buffer.get(limmit) != '\n') + limmit--; limmit++; buffer.limit(limmit); start += limmit; return buffer; - } catch (IOException ex) { + } + catch (IOException ex) { throw new UncheckedIOException(ex); } } @@ -223,8 +222,7 @@ public class CalculateAverage_imrafaelmerino { private long count = 0L; public static Stat combine(Stat m1, - Stat m2 - ) { + Stat m2) { var stat = new Stat(); stat.min = Math.min(m1.min, m2.min); stat.max = Math.max(m1.max, m2.max); @@ -256,7 +254,8 @@ public class CalculateAverage_imrafaelmerino { try { ForkJoinPool.managedBlock(managedBlocker); return managedBlocker.getResult(); - } catch (InterruptedException e) { + } + catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(e); } -- cgit v1.2.3