Skip to content

perf: art_scan 先下降到前缀覆盖节点再扫子树(kvlang #267) - #21

Merged
miaobyte merged 1 commit into
array2d:mainfrom
carsontung666:issue-267-art-scan
Sep 9, 2026
Merged

perf: art_scan 先下降到前缀覆盖节点再扫子树(kvlang #267)#21
miaobyte merged 1 commit into
array2d:mainfrom
carsontung666:issue-267-art-scan

Conversation

@carsontung666

@carsontung666 carsontung666 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

art_scan 从整树根全扫改为下降到前缀子树。List / DelTree / CpTree 全线受益。kvlang #267

before after
List 噪声 1000→8000 7.87× ~1×
DelTree 小帧 ~900 µs ~70 µs(13.5×)
art_scan self 26.6% 0.003%
fib(18) 6.36s 1.00s(6.3×)
nqueens(6) 0.38s 0.09s(4.2×)
binary_search(200) 0.51s 0.17s(3.0×)

art_scan 从 art_root 整树 DFS 改为沿 pfx 下降到覆盖节点再扫子树。
List/DelTree/CpTree 均经 List,一处修改全线受益。

before/after(同一机器、同一 bench):

List(/t/) ×400,噪声 /n/** 1000→8000
  before  0.0066s → 0.0518s  (7.87×,跟全树线性)
  after   0.0001s → 0.0001s  (~1.0×)

DelTree 小帧 /d/f,旁挂 8000 个 /lib key,200 次
  before  ~900 µs/次
  after   ~70 µs/次   (13.5×)

callgrind 同 DelTree bench
  art_scan self     26.6% → 0.003%
  Deltree inclusive 41.8% → 0.40%

kvlang shm 墙钟(master + v0.2.12 前端,只换 backend)
  fib(16)            2.11s → 0.42s  (5.1×)
  fib(18)            6.36s → 1.00s  (6.3×)
  nqueens(6)         0.38s → 0.09s  (4.2×)
  binary_search(200) 0.51s → 0.17s  (3.0×)
@miaobyte
miaobyte merged commit b0c1419 into array2d:main Sep 9, 2026
1 check passed
miaobyte added a commit that referenced this pull request Sep 9, 2026
shm 扩容 + PUNCH_HOLE 回收(集成 #22,与 #21 art_scan 共存)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants