gpt4 book ai didi

c++ - 为什么在 Emacs 中使用 CEDET 完成代码如此缓慢?

转载 作者:可可西里 更新时间:2023-11-01 18:36:17 27 4
gpt4 key购买 nike

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

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

最佳答案

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

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

关于c++ - 为什么在 Emacs 中使用 CEDET 完成代码如此缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7736891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com