Leaderboard update

This commit is contained in:
Gunnar Morling 2024-01-04 18:22:13 +01:00
parent c3411f6023
commit 88b1c30db8
4 changed files with 36 additions and 29 deletions

View File

@ -38,19 +38,20 @@ Submit your implementation by Jan 31 2024 and become part of the leaderboard!
| # | Result (m:s.ms) | Implementation | JDK | Submitter |
|---|-----------------|--------------------|-----|---------------|
| 1.| 00:14.848| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_spullara.java)| 21.0.1-graalce| [Sam Pullara](https://github.com/spullara)|
| 2.| 00:18.865| [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)|
| 3.| 00:21.853| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_filiphr.java)| 21.0.1-graal| [Filip Hrisafov](https://github.com/filiphr)|
| 4.| 00:23.366| [link](https://github.com/gunnarmorling/1brc/pull/5/)| 21.0.1-open | [Roy van Rijn](https://github.com/royvanrijn)|
| 5.| 00:38.106| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_seijikun.java)| 21.0.1-open | [Markus Ebner](https://github.com/seijikun)|
| 6.| 00:38.510| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_bjhara.java)| 21.0.1-open | [Hampus Ram](https://github.com/bjhara)|
| 7.| 00:38.819| [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)|
| 8.| 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)|
| 9.| 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)|
|10.| 00:57.141| [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)|
|11.| 02:00.101| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_khmarbaise.java)| 21.0.1-open | [khmarbaise](https://github.com/khmarbaise)|
|12.| 02:08.315| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_itaske.java)| 21.0.1-open | [itaske](https://github.com/itaske)|
|13.| 02:08.650| [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)|
|14.| 04:13.449| [link](https://github.com/gunnarmorling/onebrc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage.java) (baseline)| 21.0.1-open | [Gunnar Morling](https://github.com/gunnarmorling)|
| 2.| 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)|
| 3.| 00:18.865| [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)|
| 4.| 00:21.853| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_filiphr.java)| 21.0.1-graal| [Filip Hrisafov](https://github.com/filiphr)|
| 5.| 00:23.260| [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)|
| 6.| 00:23.366| [link](https://github.com/gunnarmorling/1brc/pull/5/)| 21.0.1-open | [Roy van Rijn](https://github.com/royvanrijn)|
| 7.| 00:38.106| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_seijikun.java)| 21.0.1-open | [Markus Ebner](https://github.com/seijikun)|
| 8.| 00:38.510| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_bjhara.java)| 21.0.1-open | [Hampus Ram](https://github.com/bjhara)|
| 9.| 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)|
|10.| 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)|
|11.| 00:57.141| [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)|
|12.| 02:00.101| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_khmarbaise.java)| 21.0.1-open | [khmarbaise](https://github.com/khmarbaise)|
|13.| 02:08.315| [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_itaske.java)| 21.0.1-open | [itaske](https://github.com/itaske)|
|14.| 02:08.650| [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)|
|15.| 04:13.449| [link](https://github.com/gunnarmorling/onebrc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage.java) (baseline)| 21.0.1-open | [Gunnar Morling](https://github.com/gunnarmorling)|
See [below](#entering-the-challenge) for instructions how to enter the challenge with your own implementation.

View File

@ -185,6 +185,7 @@
<exclude>**/.dontdelete</exclude>
<exclude>**/measurements*.txt</exclude>
<exclude>**/measurements*.out</exclude>
<exclude>out_expected.txt</exclude>
</excludes>
</configuration>
<executions>

View File

@ -159,7 +159,8 @@ public class CalculateAverage_lawrey {
m.sample(temp / 10.0);
}
} catch (IOException ioe) {
}
catch (IOException ioe) {
throw new RuntimeException(ioe);
}
return map;
@ -169,8 +170,7 @@ public class CalculateAverage_lawrey {
private static int readTemperatureFromBuffer(MappedByteBuffer mbb) {
int temp = 0;
boolean negative = false;
outer:
while (mbb.remaining() > 0) {
outer: while (mbb.remaining() > 0) {
byte b = mbb.get();
switch (b) {
case '-':

View File

@ -87,8 +87,7 @@ public class CalculateAverage_richardstartin {
private final Table table = new Table(nextBaseIndex());
private static final AtomicIntegerFieldUpdater<Dictionary> BASE_INDEX_UPDATER =
AtomicIntegerFieldUpdater.newUpdater(Dictionary.class, "baseIndex");
private static final AtomicIntegerFieldUpdater<Dictionary> BASE_INDEX_UPDATER = AtomicIntegerFieldUpdater.newUpdater(Dictionary.class, "baseIndex");
volatile int baseIndex;
private void forEach(Table table, IndexedStringConsumer consumer) {
@ -120,13 +119,15 @@ public class CalculateAverage_richardstartin {
if (storedKey == null) {
if (row.keys.compareAndSet(c, null, slice)) {
return table.index(rowIndex, c);
} else {
}
else {
storedKey = row.keys.get(c);
if (slice.equals(storedKey)) {
return table.index(rowIndex, c);
}
}
} else if (slice.equals(storedKey)) {
}
else if (slice.equals(storedKey)) {
return table.index(rowIndex, c);
}
}
@ -141,8 +142,7 @@ public class CalculateAverage_richardstartin {
private static final class Row {
private static final AtomicReferenceFieldUpdater<Row, Table>
NEXT_TABLE_UPDATER = AtomicReferenceFieldUpdater.newUpdater(Row.class, Table.class, "next");
private static final AtomicReferenceFieldUpdater<Row, Table> NEXT_TABLE_UPDATER = AtomicReferenceFieldUpdater.newUpdater(Row.class, Table.class, "next");
private final AtomicReferenceArray<ByteBuffer> keys = new AtomicReferenceArray<>(CELLS);
volatile Table next;
@ -152,7 +152,8 @@ public class CalculateAverage_richardstartin {
Table newTable = new Table(baseIndexSupplier.getAsInt());
if (NEXT_TABLE_UPDATER.compareAndSet(this, null, newTable)) {
next = newTable;
} else {
}
else {
next = this.next;
}
}
@ -180,14 +181,16 @@ public class CalculateAverage_richardstartin {
private static long compilePattern(long repeat) {
return 0x101010101010101L * repeat;
}
private static long compilePattern(char delimiter) {
return compilePattern (delimiter & 0xFFL);
return compilePattern(delimiter & 0xFFL);
}
private static long compilePattern(byte delimiter) {
return compilePattern(delimiter & 0xFFL);
}
private static final long NEW_LINE = compilePattern((byte)'\n');
private static final long NEW_LINE = compilePattern((byte) '\n');
private static final long DELIMITER = compilePattern(';');
private static int firstInstance(long word, long pattern) {
@ -311,7 +314,8 @@ public class CalculateAverage_richardstartin {
for (int i = 0; i < contribution.length; i++) {
if (aggregate[i] == null) {
aggregate[i] = contribution[i];
} else if (contribution[i] != null) {
}
else if (contribution[i] != null) {
double[] to = aggregate[i];
double[] from = contribution[i];
// todo won't vectorise - consider separating aggregates into distinct regions and apply
@ -334,7 +338,8 @@ public class CalculateAverage_richardstartin {
var slice = slices.get(min);
computeSlice(slice, pages);
return pages;
} else {
}
else {
int mid = (min + max) / 2;
var low = new AggregationTask(dictionary, slices, min, mid);
var high = new AggregationTask(dictionary, slices, mid + 1, max);