praeclarum / 1brc

1οΈβƒ£πŸπŸŽοΈ The One Billion Row Challenge - .NET Edition

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

1οΈβƒ£πŸπŸŽοΈ The One Billion Row Challenge - .NET Edition

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!

Results

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

Running

dotnet run measurements-20.txt

macOS Intel 64-bit Optimized

dotnet publish -c Release -r osx-x64 --self-contained
time bin/Release/net8.0/osx-x64/publish/1brc measurements.txt

Profiling

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

About

1οΈβƒ£πŸπŸŽοΈ The One Billion Row Challenge - .NET Edition


Languages

Language:F# 100.0%