Skip to content

Commit d27b4d0

Browse files
author
yifant
committed
!483 [207_7] Scheme补全项计算的性能问题
1 parent c5a2330 commit d27b4d0

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

TeXmacs/progs/prog/scheme-autocomplete.scm

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
(define completions (make-ptree))
3131
(define completions-cache (make-ahash-table))
3232
(define-public scheme-completions-built? #f)
33+
(define scheme-completions-initialized? #f)
3334

3435
(define (clear-completions-cache)
3536
(set! completions-cache (make-ahash-table)))
@@ -92,8 +93,9 @@
9293

9394
(tm-define (scheme-completions root)
9495
(:synopsis "Provide the completions for @root with caching")
95-
(when (not core-symbols-loaded?)
96-
(load-core-symbols))
96+
(unless scheme-completions-initialized?
97+
(set! scheme-completions-initialized? #t)
98+
(scheme-completions-rebuild))
9799

98100
(let ((root-str (tmstring->string root)))
99101
(let ((cached (ahash-ref completions-cache root-str)))
@@ -132,7 +134,3 @@
132134
(scheme-completions-add (symbol->string sym)))
133135

134136
(if developer-mode? (set! %new-read-hook %read-symbol-hook ))
135-
136-
(delayed
137-
(:idle 100)
138-
(scheme-completions-rebuild))

devel/207_7.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# 207_7 Scheme补全项计算的性能问题
22

3+
## 2025/08/01 修正补全树的创建时间
4+
5+
### What
6+
推迟补全树的构建
7+
8+
### Why
9+
10+
补全树会带来启动延迟
11+
312
## 2025/07/28 实现Scheme弹窗补全的分阶段加载与缓存机制
413

514
本次优化严格采用哈希表(ahash-table)作为补全缓存底层结构,避免了传统 assoc-set! 基于链表遍历(O(n))的低效。实际代码中所有缓存操作均为 O(1) 的 ahash-ref、ahash-set!,不存在 assoc-set! 性能瓶颈,适合大规模和高频查询的实际场景。

0 commit comments

Comments
 (0)