~/talk

Java, How Fast Can You Parse 1 Billion Rows of Weather Data?

Talkat GOTO Amsterdam 2024 · 2024-06-10..06-13· [java, data-engineering]
slides:none on file

Challenge: parse 1 billion rows (~15GB) of city + one-decimal temperatures with Vanilla Java and go from a 4+ minute baseline to sub-2-second results. Uses parallel segmented reads, memory-mapped files, low-level access via sun.misc.Unsafe, SIMD-as-register SWAR tricks and branchless parsing to avoid allocations, a custom forward‑probing hash table to aggregate without objects, Graal native-image and Epsilon GC for minimal runtime overhead, plus a worker-process unmap trick; final validated runs hit ~1.5s (winner) and several entries under 2s.

AI-written summary · about

  1. 0:00Intro
  2. 1:49The challenge
  3. 6:07Watch, learn, adopt, experiment
  4. 8:00Mechanical sympathy
  5. 9:32Temperature as integer
  6. 10:37Memory mapped files
  7. 11:54Getting unsafe
  8. 13:31SWAR
  9. 17:22Stringless
  10. 18:18Branchless programming
  11. 20:35Parse the temperature
  12. 30:14Keeping track
  13. 36:22Which JVM?
  14. 37:21Graal (native-image)
  15. 39:38Summary
  16. 40:50Results
  17. 42:00Outro
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.