測試環境
本頁所有數據都來自同一部電腦:開發應用程式所用的筆電,採一般內顯配置。Windows 版本尚未在此測量,macOS 版本仍在開發;完成後會在此加入其數據。
| 電腦 | 作業系統 | 顯示器 | 備註 |
|---|---|---|---|
| 筆電,Intel i5-11300H,23 GB,Iris Xe(Mesa 25.2) | Ubuntu 24.04,GNOME,X11 | 2560×1440 @ 180 Hz | 發布建置 1.0.0,提交 183cc22 |
測試文件:tools/perf/fixtures/doc100k.md(100 KB,874 行)· 執行 3 次,取中位數 · 指標停在視窗外 · 真實工作階段匯流排。
閒置畫格
主張:沒有動靜時,mori 不會繪製任何內容。在即時檢視中開啟文件,讓編輯器失去焦點(使游標不閃爍),並在 10 秒內不輸入任何內容(啟動後 t = 5–15 s),接著計算編輯器本身的快照次數:也就是 GTK 每次要求編輯器繪製的次數。
| 平台 | 10 s 內畫格數 | CPU,平均 | 方法 |
|---|---|---|---|
| Linux | 0 | 0.0% | 透過 tools/perf/gate.sh 計算編輯器快照 |
啟用游標閃爍時(視窗取得焦點時的預設狀態),每次閃爍會重繪編輯器一次 — 只有游標改變 — 視窗一失去焦點便會停止。這個閃爍是應用程式唯一允許持續執行的計時器;閒置時沒有其他重複來源。
輸入延遲
結論:從按鍵到像素,第 95 百分位 18.2 ms。 由 tools/perf/index/e2e_latency.sh 在行程之外量測:用 XTest 注入按鍵,然後輪詢畫面直到游標行改變。100 KB 文件,即時檢視,2560×1440 · 180 Hz。119 次按鍵:p50 14.1、p95 18.2、p99 19.1、最大 20.4 ms。
這個數字包含按鍵到像素之間的一切:工具套件、合成器,以及等待下一個影格的時間。這段等待會落在 0 到一個更新間隔之間的任意位置——在 180 Hz 下最多 5.6 ms、平均 2.8 ms——所以它只能與同樣更新率下量得的其他編輯器並列。顯示器本身的反應時間沒有計入;我們沒有量過。
冷啟動
結論:在什麼都沒有快取的情況下開啟 100 KB 檔案,從啟動到視窗 387 ms。 冷啟動指全新行程並清空頁面快取,二進位檔、函式庫和檔案都從磁碟讀取。快取還在的日常情況下,同樣的啟動是 259 ms。計時從 exec 開始,到視窗出現在畫面上結束;首次繪製是同一個計時停在編輯器第一次繪出文件的時刻。
| 編輯器 | exec → 視窗 | 快取還在 | 首次繪製 | 程序數 |
|---|---|---|---|---|
| mori | 387 ms | 259 ms | 377 ms | 1 |
| Typora | 814 ms | 511 ms | — | 9 |
| Obsidian | 2,975 ms | 2,862 ms | — | 7 |
| MarkText | 2,042 ms | 1,872 ms | — | 6 |
方法:tools/perf/run-index.sh,冷啟動=清空頁面快取的全新行程,啟動時開啟 100 KB 檔案,量測五次。記憶體是文件排版完成、應用進入閒置後從 /proc 讀到的 PSS,再減去用空白文件量得的同一讀數——也就是文件本身對我們的成本:70 MB 中的 9.4 MB。其餘是這台機器上每個 GTK4 應用都要付的工具套件與 GPU 底座,它會隨驅動而變,所以我們公布的是其中屬於我們的那一份。 二進位檔為 6.1 MB。首次繪製讀自編輯器自身的影格計數器,而那只有我們的 dev 建置才有,所以另外三個用 — 而不是猜測。
同一部電腦,同一份文件
Typora、Obsidian 和 MarkText,各自在其內嵌編輯檢視(Typora 的所見即所得、Obsidian 的即時預覽、MarkText)中開啟同一份 100 KB 文件,在上述機器上,與我們的數字來自同一次執行。記憶體是文件排版完成、應用進入閒置後整個行程樹的 PSS;閒置 CPU 是視窗取得焦點且無輸入的三十秒內行程樹的 CPU;輸入 CPU 是以人的速度每 150 ms 鍵入一個字元、共約 700 字期間行程樹的 CPU。
| 編輯器 | 版本 | PSS | 閒置 CPU | 輸入 CPU | 程序數 |
|---|---|---|---|---|---|
| mori | 1.0.0,提交 183cc22 | 70 MB | 0.0% | 7.2% | 1 |
| Typora | 1.14.9 | 457 MB | 1.1% | 30.5% | 9 |
| Obsidian | 1.12.7 | 346 MB | 1.6% | 32.5% | 7 |
| MarkText | 0.20.0-rc.1 | 405 MB | 1.4% | 62.3% | 6 |
引擎最先分道揚鑣的是閒置:視窗開著卻什麼都不做時,mori 用不到可量測的 CPU,每秒喚醒 0 次;三個 Electron 編輯器則停在 1.1–1.6 % 與每秒 29–75 次。第二處是輸入:一個核心的幾分之一,對上三分之一到三分之二。第三處是記憶體:一個行程對六到九個,70 MB 對 346–457 MB。
MarkText 以 --no-sandbox 執行(它的沙箱在這個核心上啟動不了);Obsidian 在獨立的使用者資料目錄中執行。原始資料:tools/perf/results/2026-09-09-linux-myasus-180hz.json。
重現測試
量測腳本和結果檔都在儲存庫裡;包含語料與原始資料的公開儲存庫正在準備,尚無日期。tools/perf/run-index.sh 執行全部指標,tools/perf/check.sh 依預算驗證結果。如果你量出的數字與我們的相差超過 15 %,請 告訴我們;我們會公開這個差異。
最近一次執行:2026-09-09,針對提交 183cc22 執行了一次 tools/perf/run-index.sh——本頁的所有數字,我們的和其他編輯器的,都來自那一次執行。每次發布都會重測。