~/talk

The First 80% of Reading One Billion Rows Fast Enough

Talkat Jfokus 2025 · 2025-02-03..02-05· [java]
links:none on file
slides:none on file

Baseline naive Streams run about six minutes on the supplied 13–14 GB CSV while the contest winner gets down to ~1.2 seconds; this presentation shows the 1BRC One Billion Row Challenge path to the first 80% using Java 21 and plain code, cutting allocations, replacing split/double parsing/hashmap with byte-buffer scanning, int math and an open-address table to reach ~30–50 seconds on the author’s machines, drop heap churn to a few megabytes and become effectively async-profiler visible and GC-less by eliminating object churn.

AI-written summary · about

  1. 0:00Introduction
  2. 4:47Challenge rules and setup
  3. 9:07Baseline with Java Streams
  4. 12:14Profiling the baseline
  5. 12:58Classic Java loops
  6. 15:04Optimizing string splitting
  7. 17:17Custom integer parsing
  8. 20:31No intermediate strings
  9. 21:55Integer temperatures
  10. 24:07Mutable objects
  11. 27:23Custom hash set
  12. 30:38Defer string processing
  13. 33:53Epsilon GC
  14. 37:05MinMax optimizations
  15. 39:53Final 20% speedup
  16. 44:13Key takeaways and closing remarks
~/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.