The One Billion Row Challenge (1BRC Original Java Challenge) is a fun exploration of how far modern .NET 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!
Tested on a 3GHz 10-core Xeon W iMac Pro 2017.
# | Result (m:s.ms) | Language | Implementation | Runtime | Submitter |
---|---|---|---|---|---|
1. | 00:02.68 | F# | Multithreaded.fs | net8/osx-x64 | Frank Krueger |
2. | 00:02.69 | C# | buybackoff/1brc | net8/osx-x64 | Victor Baybekov |
3. | 00:03.62 | C# | pedrosakuma/1brc | net8/osx-x64 | Pedro Travi |
4. | 00:04.80 | C# | Vake93/1brc | net8/osx-x64 | Vishvaka Ranasinghe |
5. | 00:06.04 | C# | hexawyz/OneBillionRows | net8/osx-x64 | Fabien Barbier |
6. | 00:06.55 | C# | bbronisz/1brc | net8/osx-x64 | Beniamin |
7. | 00:30.81 | C# | F0b0s/1brc | net8/osx-x64 | Sergey Popov |
8. | 00:51.76 | F# | LexedAndHashed.fs | net8/osx-x64 | Frank Krueger |
9. | 02:53.86 | C# | KristofferStrube/Blazor1brc | net8/wasm | Kristoffer Strube |
10. | 03:17.70 | Java | Java Baseline | java21 | Gunnar Morling |
11. | 03:18.26 | F# | Baseline.fs | net8/osx-x64 | Frank Krueger |
dotnet run measurements-20.txt
dotnet publish -c Release -r osx-x64 --self-contained
time bin/Release/net8.0/osx-x64/publish/1brc measurements.txt
dotnet-trace collect --duration 00:00:10 -- bin/Release/net8.0/osx-x64/publish/1brc measurements.txt
dotnet-trace convert 1brc_yyyymmdd_hhmmss.nettrace --format Speedscope
Drag the resulting json file on to https://www.speedscope.app