~/talk

A surprising real world 70x performance jump

Talkat #Pragma Conference 2023 · 2023-10-05..10-06· [engineering-leadership]
slides:none on file

A Mac app with ~500k LOC and user project files up to 35 GB project cuts load from 1m25s to 2.5 seconds by replacing full unarchive with Objective‑C runtime lazy loading: NSProxy placeholders, in‑place class replacement via objc_constructInstance/obj_setClass, forwardInvocation to dearchive on first use. Saving drops from 4m14s to 7 seconds by using APFS clone then switching the file format to SQLite, writing changed objects and removing old rows with a recursive SQL CTE; works but adds fragmentation and edge‑case bugs.

AI-written summary · about

  1. 0:00Introduction to Sparkle
  2. 2:14Problem with project files
  3. 6:12Improving load time
  4. 8:40Lazy loading with NSProxy
  5. 13:46Results of lazy loading
  6. 16:16Improving save time
  7. 18:44Switching to SQLite
  8. 22:15Optimizing object graph
  9. 27:14Final performance gains
  10. 28:42Q&A session
~/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.