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:
2026-07-12 02:31:30 +08:00
parent fdad106980
commit c4f0ee02d4
2 changed files with 91 additions and 1 deletions
+46 -1
View File
@@ -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 降至數十 msjustifycenterrightRTL 保留完整算法、行為不變(真瀏覽器差分: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):insidePillisAvoided 之「逐文本節點沿祖先鏈」迭代回填記憶化,O(文本×depth)→O(元素)。el.matches() 約降五成;深嵌套 render 進程隔離墻鐘 707ms→254ms2.8×)。
- S1 gapTrim 對齊門:尾隨 margin 僅右緣 flush 之對齊可見,唯 leftstart(ltr) 可整批跳過、省 O(gaps) 次重排。非兩端對齊 gapTrim 數千 ms→數十 msjustify/center/right/RTL 行為不變(真瀏覽器差分 trim 集逐位相同)。
### 增量恢復(第三層,向下兼容 API)
- C1 持久化 Finder:跨 render 復用元素鍵快取;正確性靠失效——invalidate(el) 清整棵子樹快取,revert 自動失效其子樹。
- C3 rerender(root)revert+render(編輯 400 段中一段 766×、matches 1441×)。
- C2 observe/disconnectMutationObserver 自動增量,內容/分類屬性變化重處理最近塊、新增之塊直接 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 全綠、輸出不變。
+45
View File
@@ -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 降至數十 msjustifycenterrightRTL 保留完整算法、行為不變(真瀏覽器差分: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 聚珍Juzhencjk-autospace # 變更紀錄Changelog 聚珍Juzhencjk-autospace
## 效能第二三層掃描/佈局提速 增量恢復Tier32026-07-12
承第一層S2+S3含掃描/佈局提速與增量恢復動態頁面局部變化免全樹重掃全程獨立複驗4 份真人撰寫真實文檔驗收測試 130140 全綠
### 掃描 / 佈局提速
- 祖先游走記憶化中間發現S4insidePillisAvoided 逐文本節點沿祖先鏈迭代回填記憶化O(文本×depth)O(元素)el.matches() 約降五成深嵌套 render 進程隔離墻鐘 707ms254ms2.8×
- S1 gapTrim 對齊門尾隨 margin 僅右緣 flush 之對齊可見 leftstart(ltr) 可整批跳過 O(gaps) 次重排非兩端對齊 gapTrim 數千 ms數十 msjustify/center/right/RTL 行為不變真瀏覽器差分 trim 集逐位相同
### 增量恢復第三層向下兼容 API
- C1 持久化 Finder render 復用元素鍵快取正確性靠失效invalidate(el) 清整棵子樹快取revert 自動失效其子樹
- C3 rerender(root)revert+render編輯 400 段中一段 766×matches 1441×
- C2 observe/disconnectMutationObserver 自動增量內容/分類屬性變化重處理最近塊新增之塊直接 renderrender/revert 期間暫停觀察不自觸發
- append 修復IV-3 差分複驗發現單測漏掉向葉塊 jz-orphan追加子塊使其轉非葉須撤容器陳舊 orphan
### 獨立複驗 真實文檔驗收
- 5 種獨立方法差分/往返/增量全量/進程隔離測速/真瀏覽器 S1與既有單測/基準不同源抓到並修復 append bug
- 4 份真人撰寫真實文檔多重集守恆無字元改///亂序revert 淨移除結構真瀏覽器整條管線零報錯
### 文檔I1/I6 收緊
- 驗收浮現 renderrevert 不還原 spacing 規範化之贅餘作者空格 Neovim 在Neovim中固有非本批引入I1 明示此為刻意常態例外I6 明示邏輯等價逐字節之唯一差異即被規範化之空格README revert 之範圍
## 效能第一層掃描提速category 記憶化 orphan 葉塊預計算2026-07-11 ## 效能第一層掃描提速category 記憶化 orphan 葉塊預計算2026-07-11
下游效能訴求掃描疑 O()之第一層無狀態保行為無公開 API 變更測試 129130 全綠輸出不變 下游效能訴求掃描疑 O()之第一層無狀態保行為無公開 API 變更測試 129130 全綠輸出不變