krz/orgo

Lightning fast org-mode static site generator. fast go org-mode static-site-generator

Commit a6c124b3cc

a6c124b3cc663458b44ad0c0fb9192fd52ff2886

parent: b8df7a53fd

Verified · cmc

cmc <hello@cleberg.net> · 2026-08-11 23:23 UTC

update speed table and readme headings

Layout: unified · split

README.md +9 −14
@@ -31,7 +31,7 @@ cargo install --path .
3131That puts an `orgo` command on your `PATH`. Full notes, including how to run it without
3232installing anything: <https://krazywarez.github.io/orgo/install.html>
3333
34## Your first site
34## Your First Site
3535
3636```sh
3737orgo init my-site
@@ -44,7 +44,7 @@ own — that is the loop you will spend your time in.
4444`init` writes a starter post, a page layout you can edit, and a config file with every
4545setting explained in comments. It never overwrites a file you already have.
4646
47## Or point it at writing you already have
47## Org-Mode, Anywhere
4848
4949```sh
5050orgo build ~/notes -o _site
@@ -62,7 +62,7 @@ Want to know what orgo will make of your files before trusting it with them?
6262`orgo audit ~/notes` reports which org constructs you use and how each one lands, with
6363counts and line numbers — never the text of your writing, so the report is safe to share.
6464
65## What you can add when you want it
65## Additional Features
6666
6767Each of these is a few lines of config, and each has a page in the guide:
6868
@@ -82,21 +82,19 @@ hundreds of them stays instant.
8282
8383## Speed
8484
85Publishing one real site — 178 org files, ~180 pages — three ways. Median of three runs
85Publishing one real site ([cleberg.net](https://cleberg.net)) — 178 org files, ~180 pages — three ways. Median of three runs
8686each, measured back to back on one machine:
8787
8888| | Time | |
8989|---|---|---|
9090| weblorg (`emacs --script publish.el`) | 49.0s | |
91| the same, plus the build script wrapped around it | 50.3s | |
91| weblorg + [build.py](https://github.com/ccleberg/cleberg.net/blob/8ec9cdfeae71068a8924dd9f61b9cc28c947ec31/build.py) | 50.3s | |
9292| orgo, cold build | **0.22s** | 223× faster |
9393| orgo, nothing changed since last build | **0.13s** | 377× faster |
9494
9595That middle row is the interesting one. weblorg alone does not group a blog index by year,
96write a tags page, rewrite image URLs, minify CSS or emit a sitemap — so the site's owner
97wrote ~600 lines of Python to do those on top of it, and pays for the whole publish again
98every time. orgo does the first three natively, minification is a build step either way,
99and *it has no sitemap yet* — that one is a real gap, not a win.
96write a tags page, rewrite image URLs, minify CSS or emit a sitemap — so I
97wrote ~600 lines of Python to do those on top of it. orgo does the first three natively.
10098
10199Read the numbers with three things in mind. The weblorg figures include Emacs starting and
102100loading its packages, which you pay on every publish and cannot avoid. orgo emits 13 pages
@@ -104,12 +102,9 @@ weblorg does not, one per tag, so it is doing slightly more work. And the two do
104102produce byte-identical output — the differences are deliberate and listed under
105103[Org support](https://krazywarez.github.io/orgo/guide/05-org-support.html).
106104
107Deployment is excluded from every row: it is an rsync over someone's network, which
108measures the network.
109
110105Apple M2 Pro, 12 cores, macOS 26.6, Emacs 30.2, orgo built with `--release`.
111106
112## The documentation
107## Docs
113108
114109<https://krazywarez.github.io/orgo/>
115110
@@ -128,7 +123,7 @@ Apple M2 Pro, 12 cores, macOS 26.6, Emacs 30.2, orgo built with `--release`.
128123| [Auditing](https://krazywarez.github.io/orgo/guide/09-auditing.html) | Reading a corpus before trusting a tool with it. |
129124| [Deploying](https://krazywarez.github.io/orgo/guide/10-deploying.html) | Producing a production build, and putting it somewhere. |
130125
131## Building from a checkout
126## Building
132127
133128```sh
134129cargo test # includes a differential check against Emacs, when present