performance · 12m

Performance, maintenance, and anti-patterns

Most Org slowness is structural, not mysterious. Measure first, and a smaller system is easier to trust than a tuned large one.

Performance work goes wrong when it starts with tuning. Measure before you touch anything, because the cause is usually a structural choice you can undo, not a variable you need to discover.

Where the time goes

Large files can slow fontification and structural operations. Thousands of Agenda files multiply scanning on every view. Babel results and inline images increase display work. org-roam requires database synchronization. Archives that stay included in Agenda revive costs you thought you had retired.

The first responses are structural, not clever: reduce org-agenda-files, archive completed work outside Agenda, split files at lifecycle boundaries, avoid global property inheritance, limit expensive hooks, and profile with Emacs' profiler. Keep a clean-profile reproduction so you can tell Org apart from your configuration.

Common anti-patterns

  • Configuring before learning hides the model behind borrowed behavior.
  • Huge copied configs combine version assumptions and undocumented dependencies.
  • Too many TODO states make transitions ambiguous.
  • Too many tags turn retrieval into taxonomy maintenance.
  • Too many capture templates slow the supposedly fast inbox.
  • Putting every note in Agenda makes the daily view noisy and slow.
  • Installing org-roam before learning links and IDs hides what it adds.
  • Globally disabling Babel confirmation expands the attack surface.
  • Storing secrets in plain text mistakes convenience for security.
  • Endless Org maintenance displaces the work the system exists to support.

Prune on a schedule

Quarterly, remove unused templates, packages, and dashboard blocks. Every one you keep is something you have to reason about when the system misbehaves. A smaller system is easier to trust. Trust, not throughput, is what lets you rely on the Agenda without re-checking it by hand.

Summary. Large files, thousands of Agenda files, Babel results, and org-roam databases each cost display and scanning time. The first responses are structural, not clever config. A list of common anti-patterns shows how setups accrete cost, and a quarterly prune keeps the system honest.

Exercises

  • Basic: List three things that slow Org down (for example large files, too many `org-agenda-files`, or archives included in Agenda) and one structural fix for each.
  • Practical: Audit your own setup against the anti-pattern list: count your TODO states, tags, and capture templates, and remove any that do not change a decision.
  • Advanced: Reproduce a slowdown in a clean Emacs profile to separate Org from configuration, then profile with Emacs' built-in profiler and report the dominant cost before changing anything.