docs: changelog 2026-07-12 效能第二/三層——掃描/佈局提速 + 增量恢復(Tier3)
新增 changelog 條目+md-twin。掃描/佈局提速(中間/S4 祖先游走記憶化、S1 gapTrim 對齊門)+增量 恢復(C1 持久化 Finder+失效、C3 rerender、C2 observe,append 修復);獨立複驗(5 法)+4 份真 人真實文檔驗收;I1/I6 收緊(作者空格規範化不還原)。changelog HTML 經 build.sh 重建。
This commit is contained in:
+46
-1
@@ -1,4 +1,4 @@
|
|||||||
<!-- built with theme=dracula, mode=report, at=2026-07-11T11:58:21Z -->
|
<!-- built with theme=dracula, mode=report, at=2026-07-11T18:24:25Z -->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh-Hant">
|
<html lang="zh-Hant">
|
||||||
<head>
|
<head>
|
||||||
@@ -2545,6 +2545,30 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
|
|||||||
<!-- BODY -->
|
<!-- BODY -->
|
||||||
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
|
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
|
||||||
|
|
||||||
|
<h2>效能第二/三層:掃描/佈局提速 + 增量恢復(Tier3) <span class="badge accent">2026-07-12</span></h2>
|
||||||
|
<p>承第一層(S2+S3)。本批含掃描/佈局提速與**增量恢復**(動態頁面局部變化免全樹重掃),全程獨立複驗+4 份真人撰寫真實文檔驗收。單元測試 130→140 全綠。</p>
|
||||||
|
<h3>掃描 / 佈局提速</h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>祖先游走記憶化(中間發現+S4)</strong>:<code>insidePill</code>/<code>isAvoided</code> 之「逐文本節點沿祖先鏈」以迭代回填記憶化(每元素恰算一次、兄弟共用),O(文本×depth)→O(元素)。掃描層 <code>el.matches()</code> 累計約降五成;深嵌套 render 進程隔離墻鐘 pre-Tier1 707ms→254ms(<strong>2.8×</strong>)。</li>
|
||||||
|
<li><strong>S1 gapTrim 對齊門</strong>:尾隨 margin 僅在右緣 flush 之對齊可見,唯 <code>left</code>/<code>start</code>(ltr) 之 ragged 右緣可整批跳過,省其 O(gaps) 次同步重排。非兩端對齊內容 gapTrim 由數千 ms 降至數十 ms;justify/center/right/RTL 保留完整算法、行為不變(真瀏覽器差分:trim 集指紋逐位相同)。</li>
|
||||||
|
</ul>
|
||||||
|
<h3>增量恢復(第三層,向下兼容 API)</h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>C1 持久化 Finder</strong>:跨 render 復用元素鍵快取。正確性靠失效——新增 <code>invalidate(el)</code> 清整棵子樹快取(祖先屬性變則後代快取變脏),<code>revert</code> 自動失效其子樹。</li>
|
||||||
|
<li><strong>C3 <code>rerender(root)</code></strong>=revert+render(局部恢復,實測編輯 400 段中一段 <strong>766×</strong>、matches 1441×)。</li>
|
||||||
|
<li><strong>C2 <code>observe</code>/<code>disconnect</code></strong>:MutationObserver 自動增量——內容/分類屬性變化重處理最近塊、新增之塊直接 render;render/revert 期間暫停觀察,自身注入絕不自觸發。</li>
|
||||||
|
<li><strong>append 修復</strong>(獨立差分複驗 IV-3 發現、單測漏掉):向葉塊(帶 <code>jz-orphan</code>)追加子塊使其轉非葉,須撤容器陳舊 orphan。</li>
|
||||||
|
</ul>
|
||||||
|
<h3>獨立複驗 + 真實文檔驗收</h3>
|
||||||
|
<ul>
|
||||||
|
<li>5 種獨立方法(差分/往返/增量≡全量/進程隔離測速/真瀏覽器 S1),皆與既有單測/基準不同源——<strong>抓到並修復 append 真 bug</strong>。</li>
|
||||||
|
<li>4 份真人撰寫真實文檔(繁體技術/簡體評論/文學對話/混排):非空白字元多重集守恆、無字元改/增/漏/亂序,<code>revert</code> 淨移除結構、真瀏覽器整條管線零報錯。</li>
|
||||||
|
</ul>
|
||||||
|
<h3>文檔(I1/I6 收緊)</h3>
|
||||||
|
<ul>
|
||||||
|
<li>驗收浮現:<code>render→revert</code> 不還原 <code>spacing</code> 依契約規範化之贅餘作者空格(<code>在 Neovim 中</code>→<code>在Neovim中</code>)——固有、非本批引入。<strong>I1</strong> 明示此為刻意常態例外(語義不變、確刪空格且不還原);<strong>I6</strong> 明示「邏輯等價≠逐字節」之唯一差異即被規範化之空格。README 補「<code>revert</code> 之範圍」注。</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h2>效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算) <span class="badge accent">2026-07-11</span></h2>
|
<h2>效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算) <span class="badge accent">2026-07-11</span></h2>
|
||||||
<p>下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更之確定收益。單元測試 129→130 全綠、輸出不變。</p>
|
<p>下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更之確定收益。單元測試 129→130 全綠、輸出不變。</p>
|
||||||
<h3>優化</h3>
|
<h3>優化</h3>
|
||||||
@@ -2792,6 +2816,27 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
|
|||||||
<script type="text/markdown" id="md-source">
|
<script type="text/markdown" id="md-source">
|
||||||
# 變更紀錄(Changelog)— 聚珍(Juzhen)/cjk-autospace
|
# 變更紀錄(Changelog)— 聚珍(Juzhen)/cjk-autospace
|
||||||
|
|
||||||
|
## 效能第二/三層:掃描/佈局提速 + 增量恢復(Tier3)(2026-07-12)
|
||||||
|
|
||||||
|
承第一層(S2+S3)。含掃描/佈局提速與增量恢復(動態頁面局部變化免全樹重掃),全程獨立複驗+4 份真人撰寫真實文檔驗收。測試 130→140 全綠。
|
||||||
|
|
||||||
|
### 掃描 / 佈局提速
|
||||||
|
- 祖先游走記憶化(中間發現+S4):insidePill/isAvoided 之「逐文本節點沿祖先鏈」迭代回填記憶化,O(文本×depth)→O(元素)。el.matches() 約降五成;深嵌套 render 進程隔離墻鐘 707ms→254ms(2.8×)。
|
||||||
|
- S1 gapTrim 對齊門:尾隨 margin 僅右緣 flush 之對齊可見,唯 left/start(ltr) 可整批跳過、省 O(gaps) 次重排。非兩端對齊 gapTrim 數千 ms→數十 ms;justify/center/right/RTL 行為不變(真瀏覽器差分 trim 集逐位相同)。
|
||||||
|
|
||||||
|
### 增量恢復(第三層,向下兼容 API)
|
||||||
|
- C1 持久化 Finder:跨 render 復用元素鍵快取;正確性靠失效——invalidate(el) 清整棵子樹快取,revert 自動失效其子樹。
|
||||||
|
- C3 rerender(root)=revert+render(編輯 400 段中一段 766×、matches 1441×)。
|
||||||
|
- C2 observe/disconnect:MutationObserver 自動增量,內容/分類屬性變化重處理最近塊、新增之塊直接 render;render/revert 期間暫停觀察、不自觸發。
|
||||||
|
- append 修復(IV-3 差分複驗發現、單測漏掉):向葉塊(帶 jz-orphan)追加子塊使其轉非葉,須撤容器陳舊 orphan。
|
||||||
|
|
||||||
|
### 獨立複驗 + 真實文檔驗收
|
||||||
|
- 5 種獨立方法(差分/往返/增量≡全量/進程隔離測速/真瀏覽器 S1),與既有單測/基準不同源——抓到並修復 append 真 bug。
|
||||||
|
- 4 份真人撰寫真實文檔:多重集守恆、無字元改/增/漏/亂序,revert 淨移除結構、真瀏覽器整條管線零報錯。
|
||||||
|
|
||||||
|
### 文檔(I1/I6 收緊)
|
||||||
|
- 驗收浮現 render→revert 不還原 spacing 規範化之贅餘作者空格(在 Neovim 中→在Neovim中)——固有、非本批引入。I1 明示此為刻意常態例外;I6 明示「邏輯等價≠逐字節」之唯一差異即被規範化之空格。README 補「revert 之範圍」注。
|
||||||
|
|
||||||
## 效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算)(2026-07-11)
|
## 效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算)(2026-07-11)
|
||||||
|
|
||||||
下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更。測試 129→130 全綠、輸出不變。
|
下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更。測試 129→130 全綠、輸出不變。
|
||||||
|
|||||||
@@ -25,6 +25,30 @@
|
|||||||
<!-- BODY -->
|
<!-- BODY -->
|
||||||
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
|
<p class="lede">聚珍(Juzhen)/cjk-autospace 變更紀錄。<a href="./index.html">← 回文檔</a></p>
|
||||||
|
|
||||||
|
<h2>效能第二/三層:掃描/佈局提速 + 增量恢復(Tier3) <span class="badge accent">2026-07-12</span></h2>
|
||||||
|
<p>承第一層(S2+S3)。本批含掃描/佈局提速與**增量恢復**(動態頁面局部變化免全樹重掃),全程獨立複驗+4 份真人撰寫真實文檔驗收。單元測試 130→140 全綠。</p>
|
||||||
|
<h3>掃描 / 佈局提速</h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>祖先游走記憶化(中間發現+S4)</strong>:<code>insidePill</code>/<code>isAvoided</code> 之「逐文本節點沿祖先鏈」以迭代回填記憶化(每元素恰算一次、兄弟共用),O(文本×depth)→O(元素)。掃描層 <code>el.matches()</code> 累計約降五成;深嵌套 render 進程隔離墻鐘 pre-Tier1 707ms→254ms(<strong>2.8×</strong>)。</li>
|
||||||
|
<li><strong>S1 gapTrim 對齊門</strong>:尾隨 margin 僅在右緣 flush 之對齊可見,唯 <code>left</code>/<code>start</code>(ltr) 之 ragged 右緣可整批跳過,省其 O(gaps) 次同步重排。非兩端對齊內容 gapTrim 由數千 ms 降至數十 ms;justify/center/right/RTL 保留完整算法、行為不變(真瀏覽器差分:trim 集指紋逐位相同)。</li>
|
||||||
|
</ul>
|
||||||
|
<h3>增量恢復(第三層,向下兼容 API)</h3>
|
||||||
|
<ul>
|
||||||
|
<li><strong>C1 持久化 Finder</strong>:跨 render 復用元素鍵快取。正確性靠失效——新增 <code>invalidate(el)</code> 清整棵子樹快取(祖先屬性變則後代快取變脏),<code>revert</code> 自動失效其子樹。</li>
|
||||||
|
<li><strong>C3 <code>rerender(root)</code></strong>=revert+render(局部恢復,實測編輯 400 段中一段 <strong>766×</strong>、matches 1441×)。</li>
|
||||||
|
<li><strong>C2 <code>observe</code>/<code>disconnect</code></strong>:MutationObserver 自動增量——內容/分類屬性變化重處理最近塊、新增之塊直接 render;render/revert 期間暫停觀察,自身注入絕不自觸發。</li>
|
||||||
|
<li><strong>append 修復</strong>(獨立差分複驗 IV-3 發現、單測漏掉):向葉塊(帶 <code>jz-orphan</code>)追加子塊使其轉非葉,須撤容器陳舊 orphan。</li>
|
||||||
|
</ul>
|
||||||
|
<h3>獨立複驗 + 真實文檔驗收</h3>
|
||||||
|
<ul>
|
||||||
|
<li>5 種獨立方法(差分/往返/增量≡全量/進程隔離測速/真瀏覽器 S1),皆與既有單測/基準不同源——<strong>抓到並修復 append 真 bug</strong>。</li>
|
||||||
|
<li>4 份真人撰寫真實文檔(繁體技術/簡體評論/文學對話/混排):非空白字元多重集守恆、無字元改/增/漏/亂序,<code>revert</code> 淨移除結構、真瀏覽器整條管線零報錯。</li>
|
||||||
|
</ul>
|
||||||
|
<h3>文檔(I1/I6 收緊)</h3>
|
||||||
|
<ul>
|
||||||
|
<li>驗收浮現:<code>render→revert</code> 不還原 <code>spacing</code> 依契約規範化之贅餘作者空格(<code>在 Neovim 中</code>→<code>在Neovim中</code>)——固有、非本批引入。<strong>I1</strong> 明示此為刻意常態例外(語義不變、確刪空格且不還原);<strong>I6</strong> 明示「邏輯等價≠逐字節」之唯一差異即被規範化之空格。README 補「<code>revert</code> 之範圍」注。</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h2>效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算) <span class="badge accent">2026-07-11</span></h2>
|
<h2>效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算) <span class="badge accent">2026-07-11</span></h2>
|
||||||
<p>下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更之確定收益。單元測試 129→130 全綠、輸出不變。</p>
|
<p>下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更之確定收益。單元測試 129→130 全綠、輸出不變。</p>
|
||||||
<h3>優化</h3>
|
<h3>優化</h3>
|
||||||
@@ -256,6 +280,27 @@
|
|||||||
<script type="text/markdown" id="md-source">
|
<script type="text/markdown" id="md-source">
|
||||||
# 變更紀錄(Changelog)— 聚珍(Juzhen)/cjk-autospace
|
# 變更紀錄(Changelog)— 聚珍(Juzhen)/cjk-autospace
|
||||||
|
|
||||||
|
## 效能第二/三層:掃描/佈局提速 + 增量恢復(Tier3)(2026-07-12)
|
||||||
|
|
||||||
|
承第一層(S2+S3)。含掃描/佈局提速與增量恢復(動態頁面局部變化免全樹重掃),全程獨立複驗+4 份真人撰寫真實文檔驗收。測試 130→140 全綠。
|
||||||
|
|
||||||
|
### 掃描 / 佈局提速
|
||||||
|
- 祖先游走記憶化(中間發現+S4):insidePill/isAvoided 之「逐文本節點沿祖先鏈」迭代回填記憶化,O(文本×depth)→O(元素)。el.matches() 約降五成;深嵌套 render 進程隔離墻鐘 707ms→254ms(2.8×)。
|
||||||
|
- S1 gapTrim 對齊門:尾隨 margin 僅右緣 flush 之對齊可見,唯 left/start(ltr) 可整批跳過、省 O(gaps) 次重排。非兩端對齊 gapTrim 數千 ms→數十 ms;justify/center/right/RTL 行為不變(真瀏覽器差分 trim 集逐位相同)。
|
||||||
|
|
||||||
|
### 增量恢復(第三層,向下兼容 API)
|
||||||
|
- C1 持久化 Finder:跨 render 復用元素鍵快取;正確性靠失效——invalidate(el) 清整棵子樹快取,revert 自動失效其子樹。
|
||||||
|
- C3 rerender(root)=revert+render(編輯 400 段中一段 766×、matches 1441×)。
|
||||||
|
- C2 observe/disconnect:MutationObserver 自動增量,內容/分類屬性變化重處理最近塊、新增之塊直接 render;render/revert 期間暫停觀察、不自觸發。
|
||||||
|
- append 修復(IV-3 差分複驗發現、單測漏掉):向葉塊(帶 jz-orphan)追加子塊使其轉非葉,須撤容器陳舊 orphan。
|
||||||
|
|
||||||
|
### 獨立複驗 + 真實文檔驗收
|
||||||
|
- 5 種獨立方法(差分/往返/增量≡全量/進程隔離測速/真瀏覽器 S1),與既有單測/基準不同源——抓到並修復 append 真 bug。
|
||||||
|
- 4 份真人撰寫真實文檔:多重集守恆、無字元改/增/漏/亂序,revert 淨移除結構、真瀏覽器整條管線零報錯。
|
||||||
|
|
||||||
|
### 文檔(I1/I6 收緊)
|
||||||
|
- 驗收浮現 render→revert 不還原 spacing 規範化之贅餘作者空格(在 Neovim 中→在Neovim中)——固有、非本批引入。I1 明示此為刻意常態例外;I6 明示「邏輯等價≠逐字節」之唯一差異即被規範化之空格。README 補「revert 之範圍」注。
|
||||||
|
|
||||||
## 效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算)(2026-07-11)
|
## 效能第一層:掃描提速(category 記憶化 + orphan 葉塊預計算)(2026-07-11)
|
||||||
|
|
||||||
下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更。測試 129→130 全綠、輸出不變。
|
下游效能訴求(掃描疑 O(n²))之第一層——無狀態、保行為、無公開 API 變更。測試 129→130 全綠、輸出不變。
|
||||||
|
|||||||
Reference in New Issue
Block a user