aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md5
-rwxr-xr-x[-rw-r--r--]calculate_average_hchiorean.sh2
-rw-r--r--src/main/java/dev/morling/onebrc/CalculateAverage_imrafaelmerino.java39
3 files changed, 24 insertions, 22 deletions
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
index 5958022..bbde839 100644..100755
--- 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<String, Stat> 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<String, Stat> combine(Map<String, Stat> xs,
- Map<String, Stat> ys
- ) {
+ Map<String, Stat> ys) {
Map<String, Stat> 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<ByteBuffer> 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<ByteBuffer> 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);
}