diff --git a/README.md b/README.md index 71fffda..3917459 100644 --- a/README.md +++ b/README.md @@ -50,13 +50,15 @@ Submit your implementation by Jan 31 2024 and become part of the leaderboard! | | 00:14.411| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_deemkeen.java)| 21.0.1-open| [deemkeen](https://github.com/deemkeen)| | | 00:16.196| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_artpar.java)| 21.0.1-open| [Parth Mudgal](https://github.com/artpar)| | | 00:17.905| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_lawrey.java)| 21.0.1-open| [Peter Lawrey](https://github.com/peter-lawrey)| +| | 00:18.866| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_imrafaelmerino.java)| 21.0.1-graal| [Rafael Merino García](https://github.com/imrafaelmerino)| | | 00:18.789| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_palmr.java)| 21.0.1-open| [Nick Palmer](https://github.com/palmr)| | | 00:19.561| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_gabrielreid.java)| 21.0.1-open| [Gabriel Reid](https://github.com/gabrielreid)| | | 00:22.709| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_seijikun.java)| 21.0.1-graal | [Markus Ebner](https://github.com/seijikun)| | | 00:23.078| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_richardstartin.java)| 21.0.1-open | [Richard Startin](https://github.com/richardstartin)| | | 00:24.351| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_yavuztas.java)| 21.0.1-graal | [Yavuz Tas](https://github.com/yavuztas)| | | 00:24.879| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_davecom.java)| 21.0.1-open | [David Kopec](https://github.com/davecom)| -| | 00:26.576| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_fatroom.java)| 21.0.1-open | [Roman Romanchuk ](https://github.com/fatroom)| +| | 00:26.253| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_flippingbits.java)| 21.0.1-graal | [Stefan Sprenger](https://github.com/flippingbits)| +| | 00:26.576| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_fatroom.java)| 21.0.1-open | [Roman Romanchuk](https://github.com/fatroom)| | | 00:27.787| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_nstng.java)| 21.0.1-open | [Nils Semmelrock](https://github.com/nstng)| | | 00:28.167| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_truelive.java)| 21.0.1-open | [Roman Schweitzer](https://github.com/truelive)| | | 00:32.764| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_moysesb.java)| 21.0.1-open | [Moysés Borges Furtado](https://github.com/moysesb)| @@ -66,6 +68,7 @@ Submit your implementation by Jan 31 2024 and become part of the leaderboard! | | 00:50.547| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_padreati.java)| 21.0.1-open | [Aurelian Tutuianu](https://github.com/padreati)| | | 00:51.678| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_twobiers.java)| 21.0.1-tem | [Tobi](https://github.com/twobiers)| | | 00:53.679| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_criccomini.java)| 21.0.1-open | [Chris Riccomini](https://github.com/criccomini)| +| | 00:59.377| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_hchiorean.java)| 21.0.1-open | [Horia Chiorean](https://github.com/hchiorean)| | | 01:24.721| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_Ujjwalbharti.java)| 21.0.1-open | [Ujjwal Bharti](https://github.com/Ujjwalbharti)| | | 01:27.912| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_jgrateron.java)| 21.0.1-open | [Jairo Graterón](https://github.com/jgrateron)| | | 01:58.536| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_kuduwa_keshavram.java)| 21.0.1-open | [Kuduwa Keshavram](https://github.com/kuduwa_keshavram)| diff --git a/calculate_average_hchiorean.sh b/calculate_average_hchiorean.sh old mode 100644 new mode 100755 index 5958022..bbde839 --- a/calculate_average_hchiorean.sh +++ b/calculate_average_hchiorean.sh @@ -15,5 +15,5 @@ # limitations under the License. # -JAVA_OPTS="-Xms1000M" +JAVA_OPTS="-Xms1000M -Xmx16G" time java $JAVA_OPTS --class-path target/average-1.0.0-SNAPSHOT.jar dev.morling.onebrc.CalculateAverage_hchiorean 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); }