c – 为什么在Emacs中使用CEDET完成代码的速度如此之慢?

前端之家收集整理的这篇文章主要介绍了c – 为什么在Emacs中使用CEDET完成代码的速度如此之慢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近尝试了KDevelop.它比语义完全自插入或M-Ret更快(即时)查找符号(变量,函数名,类,结构…).使用M-Ret的速度更快,但它没有像其他IDE那样好的格式,而是像From nil>这样无意义的格式.在emacs中,我必须等待至少~1秒,在许多情况下,等待CEDET查找所有包含的相关源文件,这需要很长时间.

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

解决方法

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

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

猜你在找的C&C++相关文章