TGViewer
/r/emacs /r/emacs @r_emacs · 81 subscribers
Post #28718 10
Comparing org-roam, org-node, Supertag and vulpea, with a benchmark you can re-run

vulpea has had a comparison page for a while, and I link it in comments when people ask how it differs from org-roam, org-node or Supertag: https://github.com/d12frosted/vulpea/blob/master/docs/comparison.org. Recently I thought: ok, let me also check performance. So I updated the page and decided to share some data.

Updating it made me look around properly, and a lot has changed over the last year. org-node sits on org-mem, which parses files in parallel subprocesses and keeps everything in memory. Supertag released V2 in September with a much narrower goal: write first, organize later.

For speed I did not want vulpea grading itself, so the numbers live in a separate repo: https://github.com/d12frosted/org-notes-bench. Same generated notes, pinned versions, each package in a fresh emacs -Q on an EC2 instance, measured only through its own commands. Each adapter is a page of Lisp.

100k files (145k notes), default settings:

||org-roam|org-node|Supertag|vulpea|
|:-|:-|:-|:-|:-|
|Index from scratch|74 min|15s|2.3 min|4.9 min|
|First run: longest freeze|whole index|3.4s|0.6s|0.26s|
|Start of a new session|16s|15s|3.5s|9ms|
|Open the find command|7.8s|19ms|37ms|25ms|
|Backlinks of a note with 35k of them|14s|26ms|0.41s|0.98s|
|Save a 10MB file: longest freeze|36s|0.39s|18ms|1.8s|

Not everything here is like for like. org-node keeps nothing on disk, so every session starts with a full index. Backlinks return different things in each package. The runs used several machines of the same type, which differ by about 15%, so read the big gaps and ignore the small ones. The README and RESULTS.md have the details, the 1k and 10k tables, and the raw data. vulpea's numbers are from master; 2.8 is not released yet.

vulpea's weak spot is the index from scratch: 4.9 min, where org-node needs 15s. On a first start it runs in the background and you pay it once, but that is what I want to work on next.

The benchmark already paid off. u/yibie took the first numbers and shipped Supertag 0.2.0 and 0.3.0 within days: indexing 100k files went from 51 min to 2.3 min, a first run that did not finish in 3.5 hours now takes 1.9 min, and saving a 10MB file blocks for 18ms instead of 13s. vulpea got faster on the way too: its find command took seconds to open at 100k notes and now takes 25ms.

I hope you find it useful. I mean, obviously I focus on performance in this post, but I also tried to map the features that each package brings, so maybe it will make your life easier. Or not :)

Thanks for reading!

https://redd.it/1x3yhv2
@r_emacs
GitHub GitHub - d12frosted/vulpea: Database layer for org-mode notes with async indexing, rich queries, backlink discovery, and external… Database layer for org-mode notes with async indexing, rich queries, backlink discovery, and external change detection. Scales to 100k+ notes. - d12frosted/vulpea
More from @r_emacs
  1. Oct 13, 2026My org-attach config, only place files go (paste / drag / download), with names I can actu…
  2. Oct 13, 2026arena](https://preview.redd.it/rpohg4omi4vh1.png?width=2208&format=png&auto=webp&s=61fe901…
  3. Oct 13, 2026ETAF: a framework and ecosystem for building full text applications in Emacs - music playe…
  4. Oct 12, 2026kubect: A text focused Emacs interface Kubernetes workflows through kubectl I finally "mer…
  5. Oct 12, 2026# Emacs Golf #031 The Kill Ring Category: D. Emacs-specific power moves Welcome to Emacs G…
  6. Oct 12, 2026wizard.el: A lightweight suite of useful Emacs functions https://github.com/jamescherti/wi…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →