请教各位,为什么我的我用spacemacs 配置cquery补全会卡顿呢,延迟比较高.但是如果我用vscode配合cquery补全速度就是瞬间补全.同一份工程.感觉跟emacs 配置有关,我该如果改配置呢,有遇到这个问题的吗
我把这个值设为0,但是补全还是很慢。需要等待大概1.5秒,甚至2秒。
我昨天測了一下irony-server和ccls。
ccls用了一些clangd的技巧,服務端計算量小。 但irony-server延遲低,主要應該是通信傳輸數據上。 emacs JSON deserialization比較慢
irony-server 在client-side 排序
company如果啓用推薦的 (setq company-transformers nil company-lsp-cache-candidates nil)
,也會卡一點。
貌似就是json导致的,vscode下面快的很
那如何才能和vscode中一样快呢?
从 27 开始, emacs 有 json 的原生实现了
我现在用的就是27,也是卡得不要不要的
暂时弃坑emacs,我转投vscode了。
应该是cquery的锅,每次触发补全时,cquery的cpu都会高上那么一会儿
不知道是什么问题。但是cquery的确会让CPU占用率飙升。
而且打开的时间长了,eldoc和xref都会出问题。感觉光标的位置捕捉错误。只能重新打开emacs。
你們如果只想要補全,在乎延遲,不關心服務端fuzzy matching,請用基於libclang的 irony-mode
如果ycmd的:GoTo
(單translation unit的find definition)的cross references就能滿足,不需要references,用 clangd
如果想要references,或者對clangd的記憶體佔用不滿意(clangd記憶體非常浪費),可以考慮ccls
但是在Windows、或者難以安裝GCC>7的Linux,不想要折騰編譯工具鏈的話,推薦cquery
今天給ccls實現了一個神器,index.multiVersion
Home · MaskRay/ccls Wiki · GitHub 可以檢索一個檔案多次,即使有#ifdef
保護,如果被索引兩次,也能把所有信息取出來。
今天在win10下,用neovim结合cquery搭建了个简单的,补全速度非常非常快,秒补全,看来速度慢也有可能是emacs的锅呀
看来是emacs的lsp客户端的问题.