佐證資料基準測試
觀察頁面傳遞的 CSS 有多少符合該頁、比較相同 UI 的生成 CSS,並連同限制檢查建置與執行階段成本。
本頁目錄
這些測量先回答兩個問題:文件頁面傳遞的 CSS 有多少符合該頁,以及相同 UI 使用 Master CSS 與 Tailwind CSS 時,各會生成多少 CSS。技術附錄涵蓋建置時間、Chromium 對 CSS 規模的反應,以及各種 Master CSS 渲染模式的成本。將結果套用到其他應用程式前,請先確認各節的條件與限制。
快照於 2026 年 11 月 4 日,在同一台機器(Apple M5 Max、macOS)上使用 Chromium 156 記錄。Master CSS 套件建置自修訂版 add10eec6。瀏覽器生命週期快照來自當天較早記錄的 3fc239c6c;add10eec6 修改編譯器與靜態建置主機,沒有修改執行階段、預設集或引擎。Master CSS 文件頁面取自同一份工作目錄的正式建置,其他文件網站則於同日擷取公開頁面。
| 指標 | 數值 | 細節 |
|---|
| 文件頁面 CSS | 23.1 / 28.9 kB | Master CSS 網站,Brotli:所列頁面/五頁中位數。 |
|---|
| 符合的樣式規則 | 55% | Master CSS 網站,五頁中位數,為 7 站中最高。 |
|---|
| 相同 UI 的生成 CSS | 1.9 / 2.6 kB | Master CSS/Tailwind CSS,docs 測試案例,Brotli。 |
|---|
| 冷啟動正式命令 | 206 / 52 ms | Master CSS/Tailwind CSS,docs 測試案例,包含啟動。 |
|---|
| 執行階段下載量 | 48.7 kB | 執行階段 JS 33.3 kB,加上編譯後程式 15.4 kB,Brotli。 |
|---|
| 漸進式首次載入 | 2 requests | HTML 與執行階段 JS;程式僅在類別需要時載入。 |
|---|
| 載入後正確性 | 54 / 54 | 通過計算樣式與清理檢查的互動。 |
|---|
| 長時間工作階段的樣式工作 | 5.0 / 12.2 s | Master CSS 執行階段/Tailwind CSS 靜態,各執行一次五分鐘。 |
|---|
主要結果由已提交的快照計算。下列各節提供每項結果的條件與完整資料。
#文件頁面 CSS
回答的問題:從各文件頁面初始 HTML 找到的行內 style 內容與連結樣式表有多大?其中多少樣式規則符合該頁?
Raw
Master CSSMaster CSS 0.8 kB + 其他行內 CSS 1.0 kB + 外部 CSS 108.6 kB
Angular1.4× Master CSS
Vue.js1.7× Master CSS
Material UI2.5× Master CSS
Bootstrap2.7× Master CSS
Next.js4.3× Master CSS
Tailwind CSS6.0× Master CSS
Brotli
Master CSSMaster CSS 0.3 kB + 其他行內 CSS 0.2 kB + 外部 CSS 22.6 kB
Angular1.0× Master CSS
Material UI1.2× Master CSS
Bootstrap1.4× Master CSS
Vue.js1.4× Master CSS
Tailwind CSS2.5× Master CSS
Next.js2.7× Master CSS
兩種檢視使用相同的比例尺與已提交的頁面快照。
文件頁面快照中記錄的 CSS 本文大小. Brotli 數值為各回應本文分別壓縮後的大小總和。
圖表加總各網站所列頁面的行內 style 內容與連結樣式表,Brotli 檢視會分別壓縮每份內容。單一頁面可能無法代表網站,因此表格為每站另外加入四個文件頁面,並呈現範圍。
| 網站 | 所列頁面(Brotli) | 五頁中位數(Brotli) | 五頁範圍(Brotli) | 五頁中位數(原始大小) | 符合的樣式規則,中位數 | 符合的樣式規則,範圍 |
|---|
| Angular | 23.3 kB | 23.3 kB | 23.2 kB – 24.5 kB | 151.8 kB | 49% | 43% – 53% |
|---|
| Material UI | 27.1 kB | 27.6 kB | 26.9 kB – 36.2 kB | 292.2 kB | 40% | 38% – 48% |
|---|
| Master CSS | 23.1 kB | 28.9 kB | 23.1 kB – 34.2 kB | 130.6 kB | 55% | 46% – 60% |
|---|
| Bootstrap | 32.6 kB | 32.6 kB | 32.6 kB – 32.6 kB | 293.9 kB | 13% | 11% – 13% |
|---|
| Vue.js | 33.4 kB | 33.4 kB | 33.4 kB – 33.4 kB | 186.3 kB | 26% | 22% – 28% |
|---|
| Tailwind CSS | 58.4 kB | 58.4 kB | 58.4 kB – 58.4 kB | 657.7 kB | 8% | 7% – 9% |
|---|
| Next.js | 61.4 kB | 61.4 kB | 61.4 kB – 61.4 kB | 479.9 kB | 13% | 11% – 14% |
|---|
每站五個文件頁面。符合的樣式規則,其選擇器會在 1280 × 800 檢視區中符合已載入頁面的某個元素。
| 指標 | 數值 | 細節 |
|---|
| 頁面數 | 74 | sitemap 列出的每個頁面 |
|---|
| CSS,Brotli | 29.7 kB (23.1 kB – 34.4 kB) | 中位數(最小值 – 最大值) |
|---|
| CSS,原始大小 | 133.7 kB (110.4 kB – 156.3 kB) | 中位數(最小值 – 最大值) |
|---|
| 符合的樣式規則 | 51% (38% – 60%) | 中位數(最小值 – 最大值) |
|---|
以相同方式測量 Master CSS 網站 sitemap 列出的每個文件頁面。
Master CSS 文件頁面結合兩種 CSS。每頁的 style#master-css 內容保有該頁使用的 utility,所列頁面這部分小於 1 kB。連結樣式表包含網站設計系統元件、預設集基礎與其參照的 token,佔了大多數位元組。每份連結樣式表屬於一個元件,且會完整抵達,因此使用較多元件的頁面連結更多檔案,各頁總量也不同。只渲染元件部分內容的頁面,例如尚未開啟的搜尋對話框或少量文章元件,仍會收到該元件全部規則,這是多數不符合規則的來源。其他網站中,有幾站會在每頁傳遞相同樣式表。
符合規則的比例衡量頁面 CSS 與該頁的貼合程度,與大小無關。將選擇器的狀態偽類別與偽元素移除後,若能符合載入後的元素,就計為符合;其他檢視區、配色或後續互動的規則,只有在元素不存在時才計為不符合。此比例反映各站自己的樣式表,不單是 CSS 框架的特性。
限制:這些是蒐集到的 CSS 內容大小,不是瀏覽器傳輸或時間測量。蒐集器不追蹤 CSS 匯入相依圖,也不計 JavaScript 注入樣式。完整回應壓縮、快取重用、標頭、CDN 行為、字體、圖片與應用程式執行階段工作,都不在比較範圍內。各站 CSS 也反映自身設計與建置選擇,因此此樣本不能單獨隔離 CSS 框架成本;下方靜態 fixtures 才以相同 UI 比較框架。
#相同 UI,生成的 CSS
回答的問題:等效的靜態 Master CSS 與 Tailwind CSS v4 fixtures,在生成 CSS 位元組、檔案與 CSS AST 結構上有何差異?
整理後的快照結合 css-output-size、build-performance 與 css-structure 結果。主要圖表使用 docs fixture 與 CLI 變體,讓第一個檢視聚焦靜態產物輸出;正式環境建置命令時間則放在技術附錄。
| 指標 | 數值 | 細節 |
|---|
| 測試案例數 | 4 | |
|---|
| CSS 輸出 | 4/4 良好 | CLI 設定中,Master CSS 的 brotli 位元組少於 Tailwind CSS 的測試案例 |
|---|
| 建置命令 | 4/4 檢查 | CLI 設定中,Tailwind CSS 冷啟動正式命令中位數較低的測試案例 |
|---|
| 建置樣本數 | 5 | 每個變體實測的命令輪數 |
|---|
| CSS 結構 | AST | 規則、選擇器、宣告、串接層、at-rules 與選擇器分數,皆從生成 CSS 解析 |
|---|
涵蓋所有實測 fixtures 的靜態比較摘要快照。
#代表性 fixture
docs fixture 代表含有導覽、程式碼區塊與表格的密集文章及文件版面。
Master CSS體積為原本的 1/1.4
docs fixture 採 CLI 設定時,經 Brotli 壓縮的 CSS 輸出。
Master CSS數量為原本的 1/1.5
從 CSS AST 解析取得的 docs fixture 生成宣告數。
#完整資料
完整表格保留所有實測 fixtures,以及 CLI/Vite 兩種設定變體。
| 測試案例 | 變體 | 未壓縮 | Gzip | Brotli | 檔案數 |
|---|
| Minimal | Master CSS static CLI | 5.6 kB | 2.0 kB | 1.7 kB | 1 |
|---|
| Minimal | Master CSS static Vite | 5.6 kB | 2.0 kB | 1.7 kB | 1 |
|---|
| Minimal | Tailwind CSS CLI | 9.3 kB | 2.7 kB | 2.3 kB | 1 |
|---|
| Minimal | Tailwind CSS Vite | 7.9 kB | 2.5 kB | 2.1 kB | 1 |
|---|
| Docs | Master CSS static CLI | 6.4 kB | 2.3 kB | 1.9 kB | 1 |
|---|
| Docs | Master CSS static Vite | 6.4 kB | 2.3 kB | 1.9 kB | 1 |
|---|
| Docs | Tailwind CSS CLI | 12.2 kB | 3.1 kB | 2.6 kB | 1 |
|---|
| Docs | Tailwind CSS Vite | 10.2 kB | 2.9 kB | 2.5 kB | 1 |
|---|
| Dashboard | Master CSS static CLI | 6.7 kB | 2.3 kB | 1.9 kB | 1 |
|---|
| Dashboard | Master CSS static Vite | 6.7 kB | 2.3 kB | 1.9 kB | 1 |
|---|
| Dashboard | Tailwind CSS CLI | 10.7 kB | 2.9 kB | 2.4 kB | 1 |
|---|
| Dashboard | Tailwind CSS Vite | 8.9 kB | 2.7 kB | 2.3 kB | 1 |
|---|
| Stress CSS | Master CSS static CLI | 12.6 kB | 3.1 kB | 2.0 kB | 1 |
|---|
| Stress CSS | Master CSS static Vite | 12.6 kB | 3.1 kB | 2.1 kB | 1 |
|---|
| Stress CSS | Tailwind CSS CLI | 17.3 kB | 3.7 kB | 2.6 kB | 1 |
|---|
| Stress CSS | Tailwind CSS Vite | 12.9 kB | 3.5 kB | 2.4 kB | 1 |
|---|
每個實測 fixture 與設定的原始、gzip、brotli CSS 位元組資料及 CSS 檔案數。
| 測試案例 | 變體 | 規則數 | 選擇器數 | 宣告數 | 自訂屬性數 | At-rule 數 | 串接層區塊數 | 未分層規則數 | 組合符數 | 最大選擇器權重 | 最大複雜度 |
|---|
| Minimal | Master CSS static CLI | 86 | 138 | 134 | 21 | 6 | 4 | 1 | 0 | 20 | 2 |
|---|
| Minimal | Master CSS static Vite | 86 | 138 | 134 | 21 | 6 | 4 | 1 | 0 | 20 | 2 |
|---|
| Minimal | Tailwind CSS CLI | 86 | 131 | 174 | 41 | 13 | 4 | 1 | 3 | 10 | 9 |
|---|
| Minimal | Tailwind CSS Vite | 99 | 132 | 199 | 41 | 12 | 4 | 1 | 3 | 10 | 9 |
|---|
| Docs | Master CSS static CLI | 102 | 154 | 153 | 24 | 7 | 4 | 1 | 0 | 20 | 2 |
|---|
| Docs | Master CSS static Vite | 102 | 154 | 153 | 24 | 7 | 4 | 1 | 0 | 20 | 2 |
|---|
| Docs | Tailwind CSS CLI | 102 | 147 | 226 | 56 | 24 | 4 | 1 | 3 | 10 | 9 |
|---|
| Docs | Tailwind CSS Vite | 116 | 149 | 251 | 56 | 23 | 4 | 1 | 3 | 10 | 9 |
|---|
| Dashboard | Master CSS static CLI | 108 | 160 | 161 | 27 | 6 | 4 | 1 | 0 | 20 | 2 |
|---|
| Dashboard | Master CSS static Vite | 108 | 160 | 161 | 27 | 6 | 4 | 1 | 0 | 20 | 2 |
|---|
| Dashboard | Tailwind CSS CLI | 105 | 150 | 195 | 42 | 13 | 4 | 1 | 3 | 20 | 9 |
|---|
| Dashboard | Tailwind CSS Vite | 118 | 151 | 220 | 42 | 12 | 4 | 1 | 3 | 20 | 9 |
|---|
| Stress CSS | Master CSS static CLI | 301 | 353 | 352 | 25 | 6 | 4 | 1 | 0 | 20 | 2 |
|---|
| Stress CSS | Master CSS static Vite | 301 | 353 | 352 | 25 | 6 | 4 | 1 | 0 | 20 | 2 |
|---|
| Stress CSS | Tailwind CSS CLI | 300 | 345 | 369 | 28 | 11 | 4 | 1 | 3 | 10 | 9 |
|---|
| Stress CSS | Tailwind CSS Vite | 312 | 346 | 393 | 28 | 10 | 4 | 1 | 3 | 10 | 9 |
|---|
從生成 CSS 解析的規則、選擇器、宣告、at-rule、串接層與選擇器形狀資料。
解讀:在討論瀏覽器成本前,CSS 結構指標先說明位元組數為何不同。Tailwind CSS 與 Master CSS fixtures 以等效的渲染 UI 意圖為目標,不追求相同類別字串。
所有實測設定都輸出一個 CSS 檔案。Master CSS 靜態建置會將進入點匯入的樣式表內嵌,包含預設集,因此頁面和使用 Tailwind CSS 一樣,透過一次請求取得生成 CSS。保留外部匯入、命名空間,或對自身含有匯入的檔案進行限定條件匯入的樣式表,則仍是獨立檔案;這些 fixtures 都沒有這類情況。
限制:這些數值不測量瀏覽器解析、樣式重新計算、版面配置、繪製、互動成本、監看模式或 HMR。fixtures 只使用 utility 類別;頁面 CSS 樣本顯示自行撰寫的元件 CSS 可能增加多少內容。
#相較七月快照的變更
前次快照日期為 2026 年 7 月 1 日,當時修訂版的引擎之後已移至 Rust,類別語法也已改變。為區分程式碼變更與機器、瀏覽器、基準測試框架的影響,七月修訂版 cd5a3972a 已重新建置,並在與目前測量相同的機器及 Chromium 版本上,重新執行該修訂版自己的測試執行器。正式建置在兩份工作目錄間交替執行三次,讓機器背景負載對雙方的影響相近。
重新執行後,七月的靜態 CSS 輸出逐位元組一致,因此較早的數據對當時修訂版有效。目前 fixtures 使用現行類別語法表達相同渲染值,其中每個類別都會生成 CSS,並通過 CLI 的 --strict 模式。
| 測量項目 | 範圍 | 2026 年 7 月 2 日 | 2026 年 11 月 4 日 | 變化 |
|---|
| Master CSS CLI CSS (Brotli) | Static CSS output | 1.8 kB | 1.9 kB | +5% |
|---|
| Master CSS CLI CSS files | Static CSS output | 1 | 1 | Same |
|---|
| Master CSS Vite CSS files | Static CSS output | 1 | 1 | Same |
|---|
| Tailwind CSS CLI CSS (Brotli, control) | Static CSS output | 2.6 kB | 2.6 kB | +2% |
|---|
| Master CSS CLI cold build | Production build | 155.8 ms | 274.2 ms | +76% |
|---|
| Master CSS Vite cold build | Production build | 230.9 ms | 340.1 ms | +47% |
|---|
| Tailwind CSS CLI cold build (control) | Production build | 88.2 ms | 77.0 ms | −13% |
|---|
| Tailwind CSS Vite cold build (control) | Production build | 150.8 ms | 129.2 ms | −14% |
|---|
| Runtime JS (Brotli) | Runtime delivery | 22.8 kB | 33.3 kB | +46% |
|---|
| Runtime default data (Brotli) | Runtime delivery | 9.8 kB | 15.4 kB | +57% |
|---|
| Runtime bootstrap | Runtime delivery | 10.3 ms | 8.7 ms | −16% |
|---|
| Runtime observe | Runtime delivery | 4.7 ms | 4.5 ms | −4% |
|---|
| Runtime navigation ready | Runtime delivery | 40.8 ms | 39.2 ms | −4% |
|---|
| Progressive requests on load | Progressive delivery | 3 | 2 | −33% |
|---|
| Progressive hydration data (Brotli) | Progressive delivery | 1.6 kB | 464 B | 0.3× |
|---|
| Progressive bootstrap | Progressive delivery | 13.2 ms | 5.4 ms | 0.4× |
|---|
| Progressive observe and hydrate | Progressive delivery | 2.1 ms | 0.3 ms | 0.1× |
|---|
| Progressive navigation ready | Progressive delivery | 40.4 ms | 39.0 ms | −3% |
|---|
| Tailwind CSS static navigation ready (control) | Progressive delivery | 23.9 ms | 25.8 ms | +8% |
|---|
| Runtime first-time class: mutation work | Interaction | 0.3 ms | 0.5 ms | +67% |
|---|
| Progressive first-time class: mutation work | Interaction | 0.6 ms | 0.3 ms | 0.5× |
|---|
| Tailwind CSS existing-class toggle ready (control) | Interaction | 46.6 ms | 61.0 ms | +31% |
|---|
各修訂版自己的執行器,在相同機器與 Chromium 版本上的中位數。雙方正式建置使用相同 Node.js 版本;每個建置中位數彙整三輪交替執行、共 15 次命令。
在此機器上,目前修訂版啟動瀏覽器執行階段較快,也用較少資料為漸進式頁面完成 hydration,但下載的執行階段更大,冷啟動正式環境建置命令耗時更久。docs fixture 的生成 CSS 約增加 5%,與七月一樣以單一檔案抵達。每份工作目錄安裝自己的 Tailwind CSS 與 Vite 版本,因此 Tailwind CSS 對照組同時反映升級及各次執行雜訊。
兩個修訂版中,各模式(包含 Tailwind CSS)的互動就緒時間都差不多。限制來自測試框架等待影格,不是 Master CSS 工作,因此讀值會以約一個影格(17 ms)為級距變動;七月修訂版較低的 Tailwind CSS 讀值,就是這樣的一級差異。
#技術附錄
這些測試組說明上述結果背後的成本:正式環境建置命令、Chromium 對 CSS 規模的反應,以及每種 Master CSS 渲染模式在瀏覽器傳送與執行的內容。選擇渲染模式或診斷建置時間時,可閱讀這些資料。
#核心假說
傳遞方面的問題是:載入較少 CSS 規則所節省的瀏覽器工作,能否抵銷執行階段生成規則的成本。請比較完整頁面生命週期:初始載入、後續互動與長時間工作階段清理。
執行階段與漸進式渲染增加 JavaScript 工作,從觀察到的類別生成規則。這組類別若少於從靜態來源推得的集合,就可能減少初始 CSS 與 CSSOM 規則量。減少的量能否抵銷啟動與變動處理,取決於工作負載。Tailwind CSS 在此作為零執行階段的靜態 CSS 對照:它不提供等效的執行階段實作,但能代表這項取捨中較大靜態 CSS 的一側。
目前證據應視為方向性結果。實測 fixtures 中,若執行階段/漸進式模式減少的 CSSOM/規則量與樣式重新計算,足以抵銷執行階段啟動、觀察與變動工作,就能支持假說;這不代表每個應用程式都會更快。
這些測試組沒有把選擇器比對直接測量為穩定的 Chromium 指標,而是從傳遞的選擇器、CSSOM 規則數、執行階段生成規則數,以及追蹤紀錄中的樣式重新計算推論。
#如何閱讀結果
基準測試在回答明確、範圍狹窄的問題時才有用。評估這項傳遞取捨時,請依下列順序閱讀測量:
- 頁面 CSS 與靜態 CSS 輸出顯示頁面或靜態設定傳遞多少位元組、檔案、選擇器、宣告與規則。
- 瀏覽器 CSS 成本校準 DOM 固定、CSS 規則量增長時,Chromium 的反應。
- 傳遞模式顯示 Master 靜態、執行階段、漸進式,以及 Tailwind 靜態模式在首次載入傳送與執行的內容。
- 互動成本測量載入後 DOM 與類別變更,包含執行階段規則工作。
- 瀏覽器生命週期證據結合長時間工作階段的瀏覽器工作、CSSOM/規則量與執行階段檢測資料。
各圖表是針對實測 fixture 與命令的證據;套用到其他應用程式前,請先與完整表格及已提交快照交叉比較。
| 問題 | 主要證據 |
|---|
| 從各文件頁面找到的 CSS 內容有多大,頁面使用多少? | 頁面 CSS 大小快照 |
| 相同 UI 生成的靜態 CSS 有多大? | 靜態 CSS 輸出與 CSS 結構快照 |
| 正式環境建置命令耗時多久? | 正式建置 |
| Master CSS 建置時間花在哪裡? | 建置路徑診斷 |
| CSS 規則量對 Chromium 有何成本? | 瀏覽器 CSS 成本校準 |
| 各傳遞模式首次載入會傳送與執行什麼? | Master CSS 傳遞模式 |
| 載入後,類別與 DOM 改變時會發生什麼? | 互動成本 |
| 執行階段工作會改變長時間工作階段的瀏覽器成本嗎? | 瀏覽器生命週期證據 |
| 修訂版之間改變了什麼? | 修訂版比較 |
Tailwind CSS 不是等效執行階段實作的比較對象。在執行階段導向的測試組中,它是靜態瀏覽器對照基準,代表假說中零執行階段、較大靜態 CSS 的一側。
數字較低不代表在所有情境都較好。較小 CSS 產物可能將工作轉移到執行階段,較快冷啟動命令可能掩蓋較少的有效輸出,本地 Chromium 追蹤也不能取代真實正式環境遙測。
測量時間時也要檢查正確性:fixture 有渲染預期 UI,較小或較快的結果才有用。測試組有記錄時,表格會包含計算樣式與漸進式採用檢查。
#正式建置
回答的問題:各靜態 fixture 與設定的完整冷啟動或重複正式環境建置命令,耗時多久?
Tailwind CSS速度為 3.9 倍
docs fixture 採 CLI 設定時,冷啟動正式環境建置命令的中位數。
| 測試案例 | 變體 | 冷啟動中位數 | 重複執行中位數 | 樣本數 |
|---|
| Minimal | Master CSS static CLI | 209 ms | 204 ms | 5 |
|---|
| Minimal | Master CSS static Vite | 269 ms | 254 ms | 5 |
|---|
| Minimal | Tailwind CSS CLI | 50.7 ms | 47.3 ms | 5 |
|---|
| Minimal | Tailwind CSS Vite | 97.5 ms | 91.9 ms | 5 |
|---|
| Docs | Master CSS static CLI | 206 ms | 203 ms | 5 |
|---|
| Docs | Master CSS static Vite | 269 ms | 258 ms | 5 |
|---|
| Docs | Tailwind CSS CLI | 52.3 ms | 49.3 ms | 5 |
|---|
| Docs | Tailwind CSS Vite | 101 ms | 91.1 ms | 5 |
|---|
| Dashboard | Master CSS static CLI | 213 ms | 209 ms | 5 |
|---|
| Dashboard | Master CSS static Vite | 307 ms | 263 ms | 5 |
|---|
| Dashboard | Tailwind CSS CLI | 56.1 ms | 51.6 ms | 5 |
|---|
| Dashboard | Tailwind CSS Vite | 110 ms | 96.6 ms | 5 |
|---|
| Stress CSS | Master CSS static CLI | 235 ms | 216 ms | 5 |
|---|
| Stress CSS | Master CSS static Vite | 287 ms | 276 ms | 5 |
|---|
| Stress CSS | Tailwind CSS CLI | 52.8 ms | 50.5 ms | 5 |
|---|
| Stress CSS | Tailwind CSS Vite | 105 ms | 98.8 ms | 5 |
|---|
每個實測 fixture 與設定的冷啟動及重複正式環境建置命令時間資料。
解讀:建置時間包含各命令流程的程序、CLI 或 Vite,以及套件啟動,因此小型 fixture 多半測到固定啟動成本。重複正式建置指在同一工作目錄執行第二次命令,不是監看模式或 HMR。
#建置路徑診斷
回答的問題:Master CSS 的哪些啟動、整合、擷取與編譯器子步驟,可說明完整命令成本?
此快照結合 startup-diagnostics、build-diagnostics、compiler-diagnostics 與 extraction-diagnostics,用於說明 Master CSS 建置路徑,不是跨框架正式環境基準測試。
| 指標 | 數值 | 細節 |
|---|
| 測試案例數 | 4 | minimal、docs、dashboard 與 stress-css 診斷測試案例 |
|---|
| 來源報告 | 4 | 啟動、建置、編譯器與擷取診斷 |
|---|
| 環境 | Apple M5 Max, v26.3.0 | darwin 27.0.0 arm64,18 個 CPU |
|---|
| CLI 命令與擷取比較 | 216.5 ms / 52.2 ms | `docs` 測試案例的完整命令測量範圍,與 CLI CSS 擷取比較 |
|---|
| Vite 額外負擔與掃描器初始化比較 | 194.7 ms / 6.06 ms 檢查 | `docs` 測試案例的 Master Vite 命令額外負擔,與掃描器初始化比較 |
|---|
| 註冊與組合 | 47.3 ms / 53.4 ms | `docs` 測試案例的樣式表進入點註冊,與首次透過公開介面完整組合比較 |
|---|
整理後的 Master CSS 建置路徑診斷快照。
Vite 路徑
docs 測試案例中位數Master Vite 命令額外負擔3 個樣本
@master/css-vite 匯入探針3 個樣本
Vite 核心模組匯入探針3 個樣本
Vite bundle CSS 擷取3 個樣本
樣式表流程
docs 測試案例中,各項公開 API 操作分別測得的中位數docs fixture 的診斷中位數。啟動探針提供方向性資訊,不能相加當作火焰圖。
| 測試案例 | CLI 命令 | CLI 擷取 | Vite 額外負擔 | Vite 匯入 | Vite 掃描器 | 註冊 | 首次組合 | 流程總計 | 最終 CSS |
|---|
| Minimal | 227.1 ms | 54 ms | 211.9 ms | 28.3 ms | 6.46 ms | 48.5 ms | 53.4 ms | 217.2 ms | 5.6 kB |
|---|
| Docs | 216.5 ms | 52.2 ms | 194.7 ms | 27.1 ms | 6.06 ms | 47.3 ms | 53.4 ms | 218.9 ms | 6.4 kB |
|---|
| Dashboard | 211.1 ms | 55.9 ms | 204.5 ms | 26.5 ms | 6 ms | 47.3 ms | 56.1 ms | 230 ms | 6.7 kB |
|---|
| Stress CSS | 220.8 ms | 61 ms | 206.3 ms | 26.7 ms | 6.02 ms | 47.4 ms | 68.6 ms | 263.1 ms | 12.6 kB |
|---|
每個實測 fixture 的完整建置路徑診斷快照資料。
解讀:一般 fixture 命令中,模組匯入與來源掃描各花數毫秒;註冊樣式表進入點及組合輸出,各花數十毫秒,同設定重複組合仍約需第一次的五分之三。一次 CLI 執行的 CPU profile(node --cpu-prof)將最大一部分、約三分之一的命令時間,歸因於編譯匯入的預設集樣式表相依圖。這項工作與 fixture 類別無關,因此小型 fixtures 也幾乎付出和大型相同的固定成本。
限制:診斷探針測量各自不同範圍與子步驟,不應把時間加總,當成同一份正式執行追蹤。
#瀏覽器 CSS 成本
回答的問題:DOM 固定時,CSS 規則量如何影響 Chromium 樣式重新計算、版面配置與繪製?CSS 固定時,DOM 規模增長又有何行為?
此測試組使用本地 fixture 頁面、可確定的外部 CSS、Playwright 與 Chromium 追蹤,是純瀏覽器校準測試,不是 Master CSS 與 Tailwind CSS 的比較。
| 指標 | 數值 | 細節 |
|---|
| CSS 規模級別 | 4 | 可見 DOM 固定,可重現的外部 CSS 持續增長 |
|---|
| 最大 CSS 規模 | 45.6 kB | 暖快取 xlarge-css 變體中的 90,042 個宣告 |
|---|
| DOM 對照組 | 3 | CSS 固定,重複的 DOM 項目持續增長 |
|---|
| 最大 DOM 規模 | 21,012 | 暖快取 large-dom 變體中實測的 DOM 節點 |
|---|
| 瀏覽器 | Chromium 156.0.8078.4 | 已提交追蹤快照使用的無頭瀏覽器 |
|---|
| 追蹤樣本數 | 3 | 每個暖快取變體實測的瀏覽器輪數 |
|---|
整理後的瀏覽器 CSS 成本快照。
樣式重新計算
暖快取中位數小型 CSS1.6 kB,792 個宣告
中型 CSS5.4 kB,7,542 個宣告
大型 CSS16.4 kB,30,042 個宣告
超大型 CSS45.6 kB,90,042 個宣告
版面配置
暖快取中位數小型 CSS1.6 kB,792 個宣告
中型 CSS5.4 kB,7,542 個宣告
大型 CSS16.4 kB,30,042 個宣告
超大型 CSS45.6 kB,90,042 個宣告
繪製
暖快取中位數小型 CSS1.6 kB,792 個宣告
中型 CSS5.4 kB,7,542 個宣告
大型 CSS16.4 kB,30,042 個宣告
超大型 CSS45.6 kB,90,042 個宣告
CSS 規則量增長、可見 DOM 固定時,暖快取追蹤中位數。
DOM 規模增長、CSS 固定時,暖快取追蹤中位數。
| 座標軸 | 變體 | 快取 | CSS brotli | 規則數 | 宣告數 | DOM 節點數 | 樣式重新計算 | 版面配置 | 繪製 | 樣本數 |
|---|
| CSS volume | Small CSS | Cold cache | 1.6 kB | 263 | 792 | 205 | 0.6 ms | 3.8 ms | 0.9 ms | 3 |
|---|
| CSS volume | Small CSS | Warm cache | 1.6 kB | 263 | 792 | 205 | 0.4 ms | 0.7 ms | 0.6 ms | 3 |
|---|
| CSS volume | Medium CSS | Cold cache | 5.4 kB | 2,513 | 7,542 | 205 | 1 ms | 4.4 ms | 1.1 ms | 3 |
|---|
| CSS volume | Medium CSS | Warm cache | 5.4 kB | 2,513 | 7,542 | 205 | 0.4 ms | 0.8 ms | 0.6 ms | 3 |
|---|
| CSS volume | Large CSS | Cold cache | 16.4 kB | 10,013 | 30,042 | 205 | 1.7 ms | 3.9 ms | 0.9 ms | 3 |
|---|
| CSS volume | Large CSS | Warm cache | 16.4 kB | 10,013 | 30,042 | 205 | 0.4 ms | 0.7 ms | 0.5 ms | 3 |
|---|
| CSS volume | XLarge CSS | Cold cache | 45.6 kB | 30,013 | 90,042 | 205 | 3.7 ms | 3.9 ms | 0.8 ms | 3 |
|---|
| CSS volume | XLarge CSS | Warm cache | 45.6 kB | 30,013 | 90,042 | 205 | 0.4 ms | 0.8 ms | 0.6 ms | 3 |
|---|
| DOM scaling | Small DOM | Cold cache | 0.5 kB | 15 | 50 | 712 | 1 ms | 4.7 ms | 1.7 ms | 3 |
|---|
| DOM scaling | Small DOM | Warm cache | 0.5 kB | 15 | 50 | 712 | 0.9 ms | 1.6 ms | 1.4 ms | 3 |
|---|
| DOM scaling | Medium DOM | Cold cache | 0.5 kB | 15 | 50 | 7,012 | 6.4 ms | 19.9 ms | 4 ms | 3 |
|---|
| DOM scaling | Medium DOM | Warm cache | 0.5 kB | 15 | 50 | 7,012 | 6.2 ms | 15.7 ms | 4.6 ms | 3 |
|---|
| DOM scaling | Large DOM | Cold cache | 0.5 kB | 15 | 50 | 21,012 | 18.1 ms | 51.7 ms | 8.7 ms | 3 |
|---|
| DOM scaling | Large DOM | Warm cache | 0.5 kB | 15 | 50 | 21,012 | 17.7 ms | 55.4 ms | 10.6 ms | 3 |
|---|
CSS 規模與 DOM 擴展變體的完整瀏覽器 CSS 成本資料。
解讀:CSS 規模曲線是主要依據,用來判斷傳遞模式在互動前要求 Chromium 載入多少 CSS。DOM 擴展對照組協助將 DOM、樣式與版面配置的擴展成本,和 CSS 酬載大小分開。
限制:這些數值不測量執行階段規則生成、真實應用程式 JavaScript、Firefox、WebKit、CDN 行為或公開真實頁面的差異。Chromium 追蹤事件名稱可能隨瀏覽器版本改變。
#Master CSS 傳遞模式
回答的問題:各傳遞模式會產生多少初始酬載、本地 Chromium 載入成本、執行階段啟動成本、程式載入,以及何種漸進式採用行為?
測試組跨靜態 fixture 集合,比較 Master CSS 靜態、執行階段、漸進式,以及 Tailwind CSS 靜態瀏覽器對照變體。
| 指標 | 數值 | 細節 |
|---|
| 測試案例數 | 4 | 在所有傳遞模式中測量的靜態測試案例集合 |
|---|
| 模式數 | 4 | Master 靜態、執行階段、漸進式與 Tailwind 靜態 |
|---|
| 瀏覽器 | Chromium 156.0.8078.4 | 本地追蹤測量使用的無頭瀏覽器 |
|---|
| 追蹤樣本數 | 3 | 每個變體實測的瀏覽器輪數 |
|---|
| 漸進式 CSS 採用 | 4/4 良好 | 漸進式執行階段採用伺服器渲染 CSS 的測試案例 |
|---|
整理後的 Master CSS 傳遞模式快照。
代表性 fixture
主要圖表呈現 docs fixture。
酬載圖表將完整 HTML 回應及首次載入請求的每個外部資產各計一次。行內 CSS 與注入的 hydration manifest 已在 HTML 內,因此不另列區段。空資產欄位不會在總量加入壓縮容器位元組。
Master CSS 執行階段3 次請求
- HTML2.2 kB
- 執行階段 JS33.3 kB
- 執行階段程式15.4 kB
Master CSS 漸進式2 次請求
Tailwind CSS 靜態2 次請求
docs fixture 記錄的回應資產,分別以 Brotli 壓縮。所有長條共用從零到最大總量的刻度,各區段顯示資產的貢獻。
這些總量是由記錄的資產欄位估算,不是實測網路傳輸大小。它們排除標頭與傳輸額外負擔,且每頁 HTML 都包含基準測試框架指令碼。詳細表格將分別壓縮的行內 CSS 與 hydration 片段保留作診斷;若將這些欄位加入回應總量,會重複計算內容。
導覽至就緒時間
中位數Master CSS 執行階段3 個樣本
Tailwind CSS 靜態3 個樣本
樣式重新計算
中位數Master CSS 執行階段3 個樣本
Master CSS 漸進式3 個樣本
版面配置
中位數Master CSS 執行階段3 個樣本
Master CSS 漸進式3 個樣本
Tailwind CSS 靜態3 個樣本
繪製
中位數Master CSS 執行階段3 個樣本
Master CSS 漸進式3 個樣本
Tailwind CSS 靜態3 個樣本
docs fixture 的本地 Chromium 載入時間中位數。
執行階段啟動
中位數Master CSS 執行階段3 個樣本
Master CSS 漸進式3 個樣本
執行階段觀察
中位數Master CSS 執行階段3 個樣本
Master CSS 漸進式3 個樣本
Master 執行階段與漸進式模式的執行階段啟動及觀察中位數。
| 測試案例 | 模式 | 回應資源 | HTML | 外部 CSS | 行內 CSS(HTML 中) | 執行階段 JS | 執行階段程式 | Hydration(HTML 中) | 規則數 | 宣告數 | 導覽就緒 | 樣式重新計算 | 版面配置 | 繪製 | 執行階段啟動 | 執行階段觀察 | 漸進式已採用 CSS |
|---|
| Minimal | Master CSS static | 3.1 kB | 1.4 kB | 1.7 kB | 0 kB | 0 kB | 0 kB | 0 kB | 86 | 134 | 24.6 ms | 0.8 ms | 5.4 ms | 0.8 ms | 0 ms | 0 ms | 0 |
|---|
| Minimal | Master CSS runtime | 50.4 kB | 1.7 kB | 0 kB | 0 kB | 33.3 kB | 15.4 kB | 0 kB | 0 | 0 | 39.6 ms | 0.6 ms | 3 ms | 0.4 ms | 8.9 ms | 4.2 ms | 0 |
|---|
| Minimal | Master CSS progressive | 36 kB | 2.7 kB | 0 kB | 0.8 kB | 33.3 kB | 0 kB | 0.4 kB | 49 | 67 | 39.8 ms | 0.5 ms | 2.8 ms | 0.4 ms | 4.2 ms | 0.3 ms | 1 |
|---|
| Minimal | Tailwind CSS static | 3.7 kB | 1.4 kB | 2.3 kB | 0 kB | 0 kB | 0 kB | 0 kB | 86 | 174 | 23.1 ms | 0.7 ms | 4.6 ms | 0.6 ms | 0 ms | 0 ms | 0 |
|---|
| Docs | Master CSS static | 3.9 kB | 2 kB | 1.9 kB | 0 kB | 0 kB | 0 kB | 0 kB | 102 | 153 | 25 ms | 0.9 ms | 6.9 ms | 1.3 ms | 0 ms | 0 ms | 0 |
|---|
| Docs | Master CSS runtime | 50.9 kB | 2.2 kB | 0 kB | 0 kB | 33.3 kB | 15.4 kB | 0 kB | 0 | 0 | 39.2 ms | 0.7 ms | 3.7 ms | 0.7 ms | 8.7 ms | 4.5 ms | 0 |
|---|
| Docs | Master CSS progressive | 36.7 kB | 3.5 kB | 0 kB | 1 kB | 33.3 kB | 0 kB | 0.5 kB | 65 | 86 | 39 ms | 0.6 ms | 3.6 ms | 0.7 ms | 5.4 ms | 0.3 ms | 1 |
|---|
| Docs | Tailwind CSS static | 4.5 kB | 1.9 kB | 2.6 kB | 0 kB | 0 kB | 0 kB | 0 kB | 102 | 226 | 25.8 ms | 1 ms | 7.7 ms | 1.2 ms | 0 ms | 0 ms | 0 |
|---|
| Dashboard | Master CSS static | 3.8 kB | 1.9 kB | 1.9 kB | 0 kB | 0 kB | 0 kB | 0 kB | 108 | 161 | 23.7 ms | 8 ms | 2.7 ms | 1.4 ms | 0 ms | 0 ms | 0 |
|---|
| Dashboard | Master CSS runtime | 50.9 kB | 2.2 kB | 0 kB | 0 kB | 33.3 kB | 15.4 kB | 0 kB | 0 | 0 | 40.7 ms | 5.8 ms | 2 ms | 0.9 ms | 9.1 ms | 4.6 ms | 0 |
|---|
| Dashboard | Master CSS progressive | 36.7 kB | 3.4 kB | 0 kB | 1 kB | 33.3 kB | 0 kB | 0.5 kB | 71 | 94 | 42.4 ms | 5.4 ms | 1.8 ms | 0.8 ms | 6.2 ms | 0.4 ms | 1 |
|---|
| Dashboard | Tailwind CSS static | 4.3 kB | 1.9 kB | 2.4 kB | 0 kB | 0 kB | 0 kB | 0 kB | 105 | 195 | 23.1 ms | 9 ms | 2.7 ms | 1.2 ms | 0 ms | 0 ms | 0 |
|---|
| Stress CSS | Master CSS static | 4.3 kB | 2.2 kB | 2 kB | 0 kB | 0 kB | 0 kB | 0 kB | 301 | 352 | 24.1 ms | 1.3 ms | 5.9 ms | 1.1 ms | 0 ms | 0 ms | 0 |
|---|
| Stress CSS | Master CSS runtime | 51.2 kB | 2.5 kB | 0 kB | 0 kB | 33.3 kB | 15.4 kB | 0 kB | 0 | 0 | 39.4 ms | 1.1 ms | 3.6 ms | 0.6 ms | 12.6 ms | 7.9 ms | 0 |
|---|
| Stress CSS | Master CSS progressive | 37.4 kB | 4.1 kB | 0 kB | 1.1 kB | 33.3 kB | 0 kB | 0.5 kB | 264 | 285 | 39.3 ms | 1 ms | 3.6 ms | 0.7 ms | 6.1 ms | 0.7 ms | 1 |
|---|
| Stress CSS | Tailwind CSS static | 4.8 kB | 2.3 kB | 2.6 kB | 0 kB | 0 kB | 0 kB | 0 kB | 300 | 369 | 23.3 ms | 1.9 ms | 5.8 ms | 1 ms | 0 ms | 0 ms | 0 |
|---|
每個實測 fixture 與模式的完整傳遞模式快照資料。
解讀:執行階段模式不傳遞生成 CSS,但會在頁面套用樣式前擷取瀏覽器執行階段與編譯後預設程式。漸進式模式從 HTML 中的伺服器/建置時 CSS 開始,由執行階段採用;只有類別不在 hydration 資料中,才擷取程式,這些初始載入沒有發生該情況。
限制:這些數值只測量本地 fixture 的初始載入,載入後變動由互動測試組處理。Master 靜態與 Tailwind 靜態各載入一份 CLI 生成樣式表,依等效 fixture 意圖建置,不是相同類別字串。執行階段與漸進式頁面載入可獨立運作的全域執行階段 bundle;bundler 整合可載入較小的漸進式進入點,其測量見 執行階段大小契約。各模式啟動方式請參閱渲染模式。
#互動成本
回答的問題:載入後切換類別、首次執行階段規則生成、DOM 加入/移除、主題切換、檢視區調整與清理週期,各有多少成本?
此測試組在 dynamic、dashboard 與 stress-dom fixtures 上測量本地 Chromium 互動。Tailwind CSS 靜態變體作為樣式/版面配置/繪製工作的瀏覽器對照組,沒有等效的用戶端執行階段規則生成。
| 指標 | 數值 | 細節 |
|---|
| 測試案例數 | 3 | dynamic、dashboard 與 stress-dom 互動測試案例 |
|---|
| 變體數 | 54 | 支援的測試案例、模式與情境組合 |
|---|
| 瀏覽器 | Chromium 156.0.8078.4 | 本地追蹤測量使用的無頭瀏覽器 |
|---|
| 樣本數 | 3 | 每個預設互動變體的實測輪數 |
|---|
| 漸進式 CSS 採用 | 3/3 良好 | 至少一個漸進式互動變體完成採用的測試案例 |
|---|
整理後的互動成本快照。
切換既有類別
變動後就緒時間中位數Master CSS 執行階段64 個元素
Master CSS 漸進式64 個元素
Tailwind CSS 靜態64 個元素
切換新類別
變動後就緒時間中位數Master CSS 執行階段64 個元素
Master CSS 漸進式64 個元素
DOM 加入/移除
變動後就緒時間中位數Master CSS 靜態48 個元素
Master CSS 執行階段48 個元素
Master CSS 漸進式48 個元素
Tailwind CSS 靜態48 個元素
主要 dynamic fixture 情境中,變動後就緒時間的中位數。
既有類別的執行階段更新
執行階段變動處理中位數Master CSS 執行階段快照規則 +0
Master CSS 漸進式快照規則 +0
新類別的執行階段更新
執行階段變動處理中位數Master CSS 執行階段快照規則 +4
Master CSS 漸進式快照規則 +69
清理週期的執行階段更新
執行階段變動處理中位數Master CSS 執行階段快照規則 +3
Master CSS 漸進式快照規則 +68
Master 執行階段與漸進式 dynamic fixture 情境的執行階段規則更新中位數。
| 測試案例 | 情境 | 模式 | 就緒 | 執行階段更新 | 規則數差量 | 樣式位元組差量 | 樣式重新計算 | 版面配置 | 繪製 | DOM 節點數 | 影響數 | 計算樣式 | 清理 | 漸進式已採用 CSS | 樣本數 |
|---|
| Dynamic | Existing class toggle | Master CSS static | 59 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0 ms | 0.3 ms | 309 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Existing class toggle | Master CSS runtime | 62.6 ms | 0 ms | 0 | 0 kB | 0.2 ms | 0 ms | 0.3 ms | 310 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Existing class toggle | Master CSS progressive | 61.1 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0 ms | 0.3 ms | 311 | 64 | 1 | 1 | 1 | 3 |
|---|
| Dynamic | Existing class toggle | Tailwind CSS static | 61 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0 ms | 0.3 ms | 309 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | New class toggle | Master CSS runtime | 62.2 ms | 0.5 ms | 4 | 0.2 kB | 0.8 ms | 0.5 ms | 0.4 ms | 310 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | New class toggle | Master CSS progressive | 60.8 ms | 0.3 ms | 69 | 0.2 kB | 0.8 ms | 0.5 ms | 0.4 ms | 311 | 64 | 1 | 1 | 1 | 3 |
|---|
| Dynamic | DOM append/remove | Master CSS static | 60.6 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0.1 ms | 0.2 ms | 309 | 48 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | DOM append/remove | Master CSS runtime | 63.6 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0.1 ms | 0.2 ms | 310 | 48 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | DOM append/remove | Master CSS progressive | 59.5 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0.1 ms | 0.2 ms | 311 | 48 | 1 | 1 | 1 | 3 |
|---|
| Dynamic | DOM append/remove | Tailwind CSS static | 58.8 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0.1 ms | 0.2 ms | 309 | 48 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Theme switch | Master CSS static | 62.9 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0 ms | 0.3 ms | 309 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Theme switch | Master CSS runtime | 60.8 ms | 0.1 ms | 1 | 0.1 kB | 0.5 ms | 0 ms | 0.3 ms | 310 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Theme switch | Master CSS progressive | 62.6 ms | 0.2 ms | 66 | 0.1 kB | 0.5 ms | 0 ms | 0.3 ms | 311 | 64 | 1 | 1 | 1 | 3 |
|---|
| Dynamic | Theme switch | Tailwind CSS static | 62.3 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0 ms | 0.3 ms | 309 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Viewport resize | Master CSS static | 112.7 ms | 0 ms | 0 | 0 kB | 0.4 ms | 0.7 ms | 0.7 ms | 309 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Viewport resize | Master CSS runtime | 112.1 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0.7 ms | 0.7 ms | 310 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Viewport resize | Master CSS progressive | 110.1 ms | 0 ms | 0 | 0 kB | 0.3 ms | 0.7 ms | 0.7 ms | 311 | 64 | 1 | 1 | 1 | 3 |
|---|
| Dynamic | Viewport resize | Tailwind CSS static | 112.5 ms | 0 ms | 0 | 0 kB | 0.6 ms | 0.7 ms | 0.8 ms | 309 | 64 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Mutation cleanup cycle | Master CSS static | 329.4 ms | 0 ms | 0 | 0 kB | 1.1 ms | 1.5 ms | 3.2 ms | 309 | 192 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Mutation cleanup cycle | Master CSS runtime | 329.9 ms | 0.6 ms | 3 | 0.1 kB | 1.6 ms | 1.8 ms | 3.1 ms | 310 | 192 | 1 | 1 | 0 | 3 |
|---|
| Dynamic | Mutation cleanup cycle | Master CSS progressive | 330.2 ms | 0.5 ms | 68 | 0.1 kB | 1.6 ms | 1.6 ms | 2.8 ms | 311 | 192 | 1 | 1 | 1 | 3 |
|---|
| Dynamic | Mutation cleanup cycle | Tailwind CSS static | 328.3 ms | 0 ms | 0 | 0 kB | 1.1 ms | 1.3 ms | 3.3 ms | 309 | 192 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Existing class toggle | Master CSS static | 61.3 ms | 0 ms | 0 | 0 kB | 0.5 ms | 0 ms | 0.6 ms | 981 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Existing class toggle | Master CSS runtime | 62.8 ms | 0 ms | 0 | 0 kB | 0.5 ms | 0 ms | 0.5 ms | 982 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Existing class toggle | Master CSS progressive | 60.3 ms | 0 ms | 0 | 0 kB | 0.5 ms | 0 ms | 0.5 ms | 983 | 160 | 1 | 1 | 1 | 3 |
|---|
| Dashboard | Existing class toggle | Tailwind CSS static | 60.5 ms | 0 ms | 0 | 0 kB | 0.7 ms | 0 ms | 0.7 ms | 981 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | DOM append/remove | Master CSS static | 61.1 ms | 0 ms | 0 | 0 kB | 0.4 ms | 0.1 ms | 0.3 ms | 981 | 80 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | DOM append/remove | Master CSS runtime | 60.9 ms | 0 ms | 0 | 0 kB | 0.4 ms | 0.1 ms | 0.3 ms | 982 | 80 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | DOM append/remove | Master CSS progressive | 61.1 ms | 0 ms | 0 | 0 kB | 0.4 ms | 0.1 ms | 0.3 ms | 983 | 80 | 1 | 1 | 1 | 3 |
|---|
| Dashboard | DOM append/remove | Tailwind CSS static | 63.4 ms | 0 ms | 0 | 0 kB | 0.5 ms | 0.1 ms | 0.4 ms | 981 | 80 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Theme switch | Master CSS static | 61.2 ms | 0 ms | 0 | 0 kB | 0.5 ms | 0 ms | 0.5 ms | 981 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Theme switch | Master CSS runtime | 61.2 ms | 0.2 ms | 1 | 0.1 kB | 0.8 ms | 0 ms | 0.5 ms | 982 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Theme switch | Master CSS progressive | 63.1 ms | 0.2 ms | 66 | 0.1 kB | 0.8 ms | 0 ms | 0.5 ms | 983 | 160 | 1 | 1 | 1 | 3 |
|---|
| Dashboard | Theme switch | Tailwind CSS static | 64 ms | 0 ms | 0 | 0 kB | 0.6 ms | 0 ms | 0.7 ms | 981 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Viewport resize | Master CSS static | 113.4 ms | 0 ms | 0 | 0 kB | 0.4 ms | 1.9 ms | 1.4 ms | 981 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Viewport resize | Master CSS runtime | 110.7 ms | 0 ms | 0 | 0 kB | 0.3 ms | 1.8 ms | 1.2 ms | 982 | 160 | 1 | 1 | 0 | 3 |
|---|
| Dashboard | Viewport resize | Master CSS progressive | 110.3 ms | 0 ms | 0 | 0 kB | 0.3 ms | 1.9 ms | 1.3 ms | 983 | 160 | 1 | 1 | 1 | 3 |
|---|
| Dashboard | Viewport resize | Tailwind CSS static | 110.3 ms | 0 ms | 0 | 0 kB | 0.5 ms | 1.8 ms | 1.5 ms | 981 | 160 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Existing class toggle | Master CSS static | 63.5 ms | 0 ms | 0 | 0 kB | 1.7 ms | 0 ms | 0.8 ms | 3,621 | 600 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Existing class toggle | Master CSS runtime | 61 ms | 0 ms | 0 | 0 kB | 1.8 ms | 0 ms | 0.7 ms | 3,622 | 600 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Existing class toggle | Master CSS progressive | 63.6 ms | 0 ms | 0 | 0 kB | 1.8 ms | 0 ms | 0.8 ms | 3,623 | 600 | 1 | 1 | 1 | 3 |
|---|
| Stress DOM | Existing class toggle | Tailwind CSS static | 61.6 ms | 0 ms | 0 | 0 kB | 2.2 ms | 0 ms | 1 ms | 3,621 | 600 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | DOM append/remove | Master CSS static | 62.9 ms | 0 ms | 0 | 0 kB | 0.6 ms | 0.1 ms | 0.5 ms | 3,621 | 160 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | DOM append/remove | Master CSS runtime | 60.6 ms | 0 ms | 0 | 0 kB | 0.6 ms | 0.1 ms | 0.6 ms | 3,622 | 160 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | DOM append/remove | Master CSS progressive | 63.2 ms | 0 ms | 0 | 0 kB | 0.5 ms | 0.1 ms | 0.5 ms | 3,623 | 160 | 1 | 1 | 1 | 3 |
|---|
| Stress DOM | DOM append/remove | Tailwind CSS static | 63.4 ms | 0 ms | 0 | 0 kB | 0.7 ms | 0.1 ms | 0.6 ms | 3,621 | 160 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Viewport resize | Master CSS static | 112.8 ms | 0 ms | 0 | 0 kB | 0.6 ms | 6.5 ms | 2.7 ms | 3,621 | 600 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Viewport resize | Master CSS runtime | 108.1 ms | 0 ms | 0 | 0 kB | 0.4 ms | 6.2 ms | 2.7 ms | 3,622 | 600 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Viewport resize | Master CSS progressive | 112.4 ms | 0 ms | 0 | 0 kB | 0.4 ms | 6.1 ms | 2.7 ms | 3,623 | 600 | 1 | 1 | 1 | 3 |
|---|
| Stress DOM | Viewport resize | Tailwind CSS static | 110.3 ms | 0 ms | 0 | 0 kB | 0.6 ms | 6 ms | 2.9 ms | 3,621 | 600 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Mutation cleanup cycle | Master CSS static | 262.8 ms | 0 ms | 0 | 0 kB | 1.8 ms | 2.7 ms | 7.7 ms | 3,621 | 480 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Mutation cleanup cycle | Master CSS runtime | 262.3 ms | 0.3 ms | 3 | 0.1 kB | 5.9 ms | 7.4 ms | 7.4 ms | 3,622 | 480 | 1 | 1 | 0 | 3 |
|---|
| Stress DOM | Mutation cleanup cycle | Master CSS progressive | 261.8 ms | 0.5 ms | 68 | 0.1 kB | 6.2 ms | 7.6 ms | 7.4 ms | 3,623 | 480 | 1 | 1 | 1 | 3 |
|---|
| Stress DOM | Mutation cleanup cycle | Tailwind CSS static | 263.1 ms | 0 ms | 0 | 0 kB | 2 ms | 2.6 ms | 7.5 ms | 3,621 | 480 | 1 | 1 | 0 | 3 |
|---|
支援的 fixture、模式與情境組合之完整互動成本資料。
解讀:執行階段與漸進式模式應分兩層閱讀:先看使用者可見的變動就緒,再看執行階段樣式表工作。就緒時間包含測試框架等待影格,且各模式幾乎相同,因此模式額外增加的成本應比較執行階段變動工作與樣式重新計算。規則差量計算執行階段公開快照中的規則。漸進式頁面延後啟動引擎時,快照沒有規則;第一個不在 hydration 資料中的類別啟動引擎後,會將伺服器渲染規則採用到狀態中,因此該次互動的差量也計入採用的規則。請比較執行階段變動工作與樣式重新計算,評估 CSSOM 成本。
限制:這些數值不測量路由轉場、HMR、開發流程、CDN 行為、Firefox、WebKit,或公開真實應用程式的差異。
#瀏覽器生命週期與長時間工作階段
回答的問題:每次記錄的五分鐘工作階段,累積多少渲染與執行階段工作?
生命週期測試組比較 Master CSS 靜態、執行階段與漸進式設定,以及 Tailwind CSS 靜態對照組。下方圖表選用五分鐘長時間工作階段情境。每種模式只有一次實測執行;單一樣本的中位數就是那次觀察,不能證明可重複性。
表格經過時間涵蓋完整指令碼工作階段與最後等待穩定的影格。來源指標名為 inp-style-interaction-ms,但此情境設計上就約為五分鐘,不是在測量單次輸入延遲或 Web Vitals INP。
| 指標 | 數值 | 細節 |
|---|
| 快照變體數 | 64 | 4 種模式的 7 個情境 |
|---|
| 已記錄模式數 | 4/4 良好 | 分段的五分鐘長時間工作階段報告 |
|---|
| 瀏覽器 | Chromium 156.0.8078.4 | 本地追蹤測量使用的無頭瀏覽器 |
|---|
| 長時間工作階段樣本數 | 1 | 已提交證據中,各模式實測的五分鐘輪數 |
|---|
| 計算樣式檢查 | 4/4 良好 | computed-style-valid = 1 的五分鐘證據變體 |
|---|
| 漸進式 CSS 採用 | 1/1 良好 | Master 漸進式長時間工作階段證據變體 |
|---|
瀏覽器生命週期證據的涵蓋範圍與正確性檢查。
樣式重新計算
五分鐘執行 · n=1Master CSS 執行階段
Tailwind CSS 靜態
版面配置
五分鐘執行 · n=1Tailwind CSS 靜態
繪製
五分鐘執行 · n=1Master CSS 執行階段
Tailwind CSS 靜態
執行階段變動處理工作
五分鐘執行 · n=1Master CSS 執行階段78 個規則
Master CSS 漸進式78 個規則
各模式單次五分鐘執行中,觀察到的瀏覽器渲染與執行階段工作。
| 模式 | 工作階段經過時間 | 樣式重新計算 | 版面配置 | 繪製 | 長任務數 | CSSOM 規則數 | 執行階段規則數 | 執行階段變動處理 | JS 堆積記憶體 | 計算樣式 | 漸進式已採用 CSS | 樣本數 |
|---|
| Master CSS static | 300,115.9 ms | 6,644 ms | 1,307.4 ms | 5,760.7 ms | 0 | 98 | 0 | 0 ms | 1,796.3 kB | 1 | 0 | 1 |
|---|
| Master CSS runtime | 300,102.5 ms | 5,047.7 ms | 1,119 ms | 4,698.8 ms | 1 | 59 | 78 | 211.3 ms | 5,358 kB | 1 | 0 | 1 |
|---|
| Master CSS progressive | 300,119.9 ms | 8,913.1 ms | 1,659.5 ms | 7,194.2 ms | 0 | 59 | 78 | 312.6 ms | 4,808.1 kB | 1 | 1 | 1 |
|---|
| Tailwind CSS static | 300,117.2 ms | 12,181.7 ms | 1,718.1 ms | 6,998.8 ms | 0 | 112 | 0 | 0 ms | 1,479.7 kB | 1 | 0 | 1 |
|---|
每種模式的完整五分鐘長時間工作階段證據。
解讀:比較總樣式重新計算與各模式增加的執行階段變動工作。各模式只執行一次,無法證明穩定加速。對版面配置、繪製、回應能力或整體效能下結論前,請先在同一機器上比較重複執行。
限制:除非 Chromium 提供穩定的追蹤指標,選擇器比對時間仍是從 CSSOM/規則量加上樣式重新計算推論。只有蒐集方式穩定到能在相同瀏覽器版本重現時,才回報 CSSOM 記憶體與 GC 壓力。
#資料來源
圖表讀取已提交至 benchmarks/**/snapshot.json 與 benchmarks/browser-lifecycle/long-session-evidence.json、日期為 2026 年 11 月 4 日的快照。fixtures、指標類別、發布規則、記錄命令與驗證步驟見基準測試 README。重現結果需要相符的原始碼修訂版與 lockfile,不是只安裝目前套件即可。