lsp-bridge -- 速度最快的语法补全插件

测试了一下,all-completions加上predicate后大概慢了 7 倍左右. 我的 obarray 的大小有63668个。

(benchmark-elapse
 (lsp-bridge-elisp-symbols--global))
;; 0.037313531
(benchmark-elapse
 (all-completions "" obarray))
;; 0.005165364

local symbol不是很慢,也可能和测试样例有关系

(defun let-list (N)
  (if (= N 1)
      nil
    `(let (,(intern (concat "x" (number-to-string N))))
       ,(let-list (- N 1)))))
(let-list 100)
;; (let (x100) (let (x99) (let (x98) (let (x97) (let (x96) (let (x95) (let (x94) (let (x93) (let (x92) (let (x91) (let (x90) (let (x89) (let (x88) (let (x87) (let (x86) (let (x85) (let (x84) (let (x83) (let (x82) (let (x81) (let (x80) (let (x79) (let (x78) (let (x77) (let (x76) (let (x75) (let (x74) (let (x73) (let (x72) (let (x71) (let (x70) (let (x69) (let (x68) (let (x67) (let (x66) (let (x65) (let (x64) (let (x63) (let (x62) (let (x61) (let (x60) (let (x59) (let (x58) (let (x57) (let (x56) (let (x55) (let (x54) (let (x53) (let (x52) (let (x51) (let (x50) (let (x49) (let (x48) (let (x47) (let (x46) (let (x45) (let (x44) (let (x43) (let (x42) (let (x41) (let (x40) (let (x39) (let (x38) (let (x37) (let (x36) (let (x35) (let (x34) (let (x33) (let (x32) (let (x31) (let (x30) (let (x29) (let (x28) (let (x27) (let (x26) (let (x25) (let (x24) (let (x23) (let (x22) (let (x21) (let (x20) (let (x19) (let (x18) (let (x17) (let (x16) (let (x15) (let (x14) (let (x13) (let (x12) (let (x11) (let (x10) (let (x9) (let (x8) (let (x7) (let (x6) (let (x5) (let (x4) (let (x3) (let (x2) nil)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

在嵌套 let 最里面benchmark

(benchmark-elapse
  (lsp-bridge-elisp-symbols--local))
;; 0.000519512
1 个赞