7

我最近尝试了 KDevelop。它查找符号(变量、函数名、类、结构...)比(即时)快得多semantic-complete-self-insertor M-Ret。使用M-Ret速度更快,但它没有像其他 IDE 那样好的格式,而是像 From nil >. 在 emacs 中,我必须等待至少约 1 秒,在许多情况下,等待 CEDET 查找所有包含的相关源文件,这需要很长时间。

我用过auto complete clang,但似乎没有速度提升。为什么会这样 :( ?我喜欢 Emacs 和所有的东西,并且在我发现 KDevelop 之前将它用于我的 C/C++ 将近一年,但是使用 Emacs 意味着代码完成应该是微不足道的和可选的?

4

1 回答 1

6

这个最简单的答案很可能是 KDevelop 的 DUChain 和解析器是用(我认为)C++ 编写的,并具有类似的令牌管理功能。CEDET 的解析器都在 Emacs Lisp 中,数据库和查找也在 Emacs Lisp 中。虽然在 Emacs 中对完成引擎的调用之间构建和缓存了一些表,但它们经常在代码更改时重新构建(由于键入)。一旦构建了所有表,CEDET 完成引擎就会非常快。

我已经在代码完成上运行了许多配置文件以使事情变得更快,并且在阅读了一些关于 duchain 的信息之后,看起来 KDevelop 为整个项目提供了一个主符号表。CEDET 不能这样做,因为并非所有文件都在一个项目中,因此每个文件都需要创建一个临时表。我已经知道这一点很长一段时间了,但从未将 CEDET 的符号数据库外部化,以便可以在单独的线程(进程)中构建和维护此类表。

于 2011-10-20T00:28:35.007 回答