1️⃣🐝🏎️ The One Billion Row Challenge -- A fun exploration of how quickly 1B rows from a text file can be aggregated with Java

★ 8,145⑂ 2,246👁 79▤ 0
8,145
stars
+0+0+14
2,246
forks
79
watchers
–
prs
–
issues
0
releases
–
discussions

README

1️⃣🐝🏎️ The One Billion Row Challenge

_Status Feb 4: The final leaderboards have been published. Congrats to all the winners, and a big thank you to everyone participating in this challenge as well as to everyone helping to organize it!_

_Status Feb 3: All entries have been evaluated and I am in the process of finalizing the leaderboards._

_Status Feb 1: The challenge has been closed for new submissions. No new pull requests for adding submissions are accepted at this time.
Pending PRs will be evaluated over the next few days._

_Status Jan 31: The challenge will close today at midnight UTC._

_Status Jan 12: As there has been such a large number of entries to this challenge so far (100+), and this is becoming hard to manage, please only create new submissions if you expect them to run in 10 seconds or less on the evaluation machine._

_Status Jan 1: This challenge is open for submissions!_

 Sponsorship

 A big thank you to my employer Decodable for funding the evaluation environment and supporting this challenge!

The One Billion Row Challenge (1BRC) is a fun exploration of how far modern Java can be pushed for aggregating one billion rows from a text file.
Grab all your (virtual) threads, reach out to SIMD, optimize your GC, or pull any other trick, and create the fastest implementation for solving this task!



The text file contains temperature values for a range of weather stations.
Each row is one measurement in the format ;, with the measurement value having exactly one fractional digit.
The following shows ten rows as an example:


Hamburg;12.0
Bulawayo;8.9
Palembang;38.8
St. John's;15.2
Cracow;12.6
Bridgetown;26.9
Istanbul;6.2
Roseau;34.4
Conakry;31.2
Istanbul;23.0


The task is to write a Java program which reads the file, calculates the min, mean, and max temperature value per weather station, and emits the results on stdout like this
(i.e. sorted alphabetically by station name, and the result values per station in the format //, rounded to one fractional digit):


{Abha=-23.0/18.0/59.2, Abidjan=-16.2/26.0/67.3, Abéché=-10.0/29.4/69.0, Accra=-10.1/26.4/66.4, Addis Ababa=-23.7/16.0/67.0, Adelaide=-27.8/17.3/58.5, ...}


Submit your implementation by Jan 31 2024 and become part of the leaderboard!

 Results

These are the results from running all entries into the challenge on eight cores of a Hetzner AX161 dedicated server (32 core AMD EPYC™ 7502P (Zen2), 128 GB RAM).

|  | Result (m:s.ms) | Implementation     | JDK | Submitter     | Notes     | Certificates |
|---|-----------------|--------------------|-----|---------------|-----------|--------------|
| 1 | 00:01.535 | link| 21.0.2-graal | Thomas Wuerthinger, Quan Anh Mai, Alfonso² Peterssen | GraalVM native binary, uses Unsafe | Certificate |
| 2 | 00:01.587 | link| 21.0.2-graal | Artsiom Korzun | GraalVM native binary, uses Unsafe | Certificate |
| 3 | 00:01.608 | link| 21.0.2-graal | Jaromir Hamala | GraalVM native binary, uses Unsafe | Certificate |
|   | 00:01.880 | link| 21.0.1

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON