Podcast
Podcaster
Beschreibung
vor 1 Tag
Java und Performance in einem Satz? Für viele klingt das immer
noch wie ein Widerspruch. Dann kommt eine Challenge daher, bei
der eine Milliarde Zeilen Wetterdaten verarbeitet werden sollen,
und plötzlich wird aus Stammtischwissen ein echter
Engineering-Nerdfight. Genau darum geht es in dieser Episode. Wir
tauchen tief in die One Billion Row Challenge ein und schauen uns
an, wie eine vermeintlich einfache Aufgabe zum internationalen
Performance-Contest wurde.
Wir sprechen darüber, warum Gunnar Morling diese Challenge
gestartet hat, wie aus einer naiven Lösung mit fast fünf Minuten
Laufzeit optimierte Implementierungen mit rund 1,5 Sekunden
wurden und welche Rolle dabei Java, GraalVM, Memory Mapping,
Unsafe, SIMD, Branchless Coding, Hashmaps, Cache-Lines und
Integer-Arithmetik spielen. Außerdem schauen wir auf die Kritik
an der Challenge, etwa RAM-Disk, Dataset-Overfitting und
CPU-spezifische Optimierungen, und wir werfen einen Blick auf
alternative Umsetzungen in C, Go, PHP, SQL, DuckDB, ClickHouse,
AWK und sogar auf GPU-Ansätze.
Wenn du Performance-Optimierung nicht nur als Buzzword, sondern
als Mischung aus Hardware-Verständnis, Datenstrukturen,
Compiler-Wissen und Community-Lernen sehen willst, bist du hier
genau richtig. Und ganz nebenbei klären wir auch noch, ob Java
wirklich langsam ist oder ob dieser Mythos endlich in Rente darf.
Bonus: AWK schafft es in elf Zeilen. Nicht schnell, aber
stilvoll.
Unsere aktuellen Werbepartner findest du auf
https://engineeringkiosk.dev/partners
Das schnelle Feedback zur Episode:
(top) (geht
so)
Anregungen, Gedanken, Themen und Wünsche
Dein Feedback zählt! Erreiche uns über einen der folgenden Kanäle
…
EngKiosk Community:
https://engineeringkiosk.dev/join-discord
LinkedIn: https://www.linkedin.com/company/engineering-kiosk/
Email: stehtisch@engineeringkiosk.dev
Mastodon: https://podcasts.social/@engkiosk
Bluesky:
https://bsky.app/profile/engineeringkiosk.bsky.social
Instagram: https://www.instagram.com/engineeringkiosk/
Unterstütze den Engineering Kiosk
Wenn du uns etwas Gutes tun möchtest … Kaffee schmeckt uns
immer
Buy us a coffee: https://engineeringkiosk.dev/kaffee
Links
Gunnar Morling: https://www.morling.dev/
Blog Post “The One Billion Row Challenge”:
https://www.morling.dev/blog/one-billion-row-challenge/
1brc Github Repository: https://github.com/gunnarmorling/1brc
The Software Development Kit Manager: https://sdkman.io/
1BRC Show and Tell:
https://github.com/gunnarmorling/1brc/discussions/categories/show-and-tell
JEP 471: Deprecate the Memory-Access Methods in
sun.misc.Unsafe for Removal: https://openjdk.org/jeps/471
GraalVM: https://www.graalvm.org/
Aleksey Shipilëv’s Submission mit 187 Zeilen Kommentar:
https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_shipilev.java
Fastest known solution: 0.577s (8 core Zen2); C with heavy
AVX2: https://github.com/gunnarmorling/1brc/discussions/710
AWK-Lösungen:
https://github.com/gunnarmorling/1brc/discussions/171
AWK in 11 Zeilen:
https://github.com/emiruz/1brc/blob/main/1brc.awk
1BRC mit DuckDB:
https://rmoff.net/2024/01/03/1%EF%B8%8F%E2%83%A3%EF%B8%8F-1brc-in-sql-with-duckdb/
1BRC mit Clickhouse: https://ftisiot.net/posts/1brows/
One Trillion Row Challenge: https://github.com/coiled/1trc
The One Billion Row Challenge in Go: from 1m45s to 3.4s in
nine solutions: https://benhoyt.com/writings/go-1brc/
Processing One Billion Rows in PHP!:
https://dev.to/realflowcontrol/processing-one-billion-rows-in-php-3eg0/
1BRC in PHP FFI + Rust:
https://gianlucafabrizi.dev/blog/posts/1brc-php-ffi/
Dask (Parallel Python): https://www.dask.org/
1BRC–Nerd Sniping the Java Community:
https://www.infoq.com/presentations/1brc/
The Billion Row Challenge (1BRC) - Step-by-step from 71s to
1.7s:
https://questdb.com/blog/billion-row-challenge-step-by-step/
1BRC merykitty’s Magic SWAR: 8 Lines of Code Explained in
3,000 Words: https://questdb.com/blog/1brc-merykittys-magic-swar/
Path to the Fastest #1BRC Solution:
https://github.com/thomaswue/1brc-steps
1BRC - What a Journey:
https://www.esolutions.tech/1brc-what-a-journey
Gewinner der 1BRC Thomas Wuerthinger:
https://www.linkedin.com/in/thomaswue/
Zenbleed: https://lock.cmpxchg8b.com/zenbleed.html
Engineering Kiosk Episode #180 Skalierung, aber zu welchem
Preis? (Papers We Love):
https://engineeringkiosk.dev/podcast/episode/180-skalierung-aber-zu-welchem-preis-papers-we-love/
mmap: https://en.wikipedia.org/wiki/Mmap
Sprungmarken
(00:00:00) One Billion Row Challenge und der
Java-Performance-Mythos
(00:04:25) Info/Werbung
(00:05:25) One Billion Row Challenge und der
Java-Performance-Mythos
(00:07:07) Die Challenge: 1 Milliarde Wetterdaten und ein viraler
Benchmark
(00:13:00) Testsetup, Hetzner-Server und erste
Laufzeit-Schätzungen
(00:17:05) Von 4 Minuten auf 1,5 Sekunden: Gewinner, GraalVM und
Bonuslisten
(00:21:35) Kritik am Benchmark: RAM-Disk, Overfitting und
Realitätsbezug
(00:25:03) Erste Optimierungen: Parallelisierung, lokale Hashmaps
und Dateisplits
(00:26:59) Memory Mapping, Unsafe und Garbage Collection
vermeiden
(00:34:38) Custom Hashmaps, Cache Lines und Integer statt Float
(00:38:30) Temperatur-Parsing auf Bit-Ebene und ALU-Operationen
(00:42:02) SIMD, SWAR und Branchless Coding auf CPU-Ebene
(00:49:53) GraalVM als Performance-Hebel und ein kreativer
Prozess-Hack
(00:54:05) Andere Sprachen im Vergleich: C, Go, PHP, AWK und SQL
(00:59:20) Warum die GPU hier nicht automatisch gewinnt
(01:01:44) Was bringt das im Alltag? Kritik, Learnings und
Team-Challenges
Hosts
Wolfgang Gassler (https://gassler.dev)
Andy Grunwald (https://andygrunwald.com/)
Community
Diskutiere mit uns und vielen anderen Tech-Spezialist⋅innen in
unserer Engineering Kiosk Community unter
https://engineeringkiosk.dev/join-discord
Weitere Episoden
59 Minuten
vor 1 Woche
1 Stunde 12 Minuten
vor 2 Wochen
1 Stunde 22 Minuten
vor 3 Wochen
1 Stunde 16 Minuten
vor 4 Wochen
47 Minuten
vor 1 Monat
Kommentare (0)
Melde Dich an, um einen Kommentar zu schreiben.