我的测试设置:
英特尔双核 3GHz、Windows XP 32 位、Emacs 23.2.1、CEDET v1.0(按照 INSTALL 文档中的描述进行字节编译)。

Emacs init 文件只包含以下四行:

(load "~/vendor/cedet/common/cedet.el")
(semantic-load-enable-code-helpers)
(require 'semantic-ia)
(global-ede-mode 1)

打开仅包含一个函数的 C++ 文件时,通过 (semantic-ia-complete-symbol) 完成该函数仅在明显滞后后完成,即使经过反复尝试也是如此。

评估 semantic-analyze-current-context 表明缓慢是由语义分析器引起的。

这是多次运行 semantic-elp-analyze 后的 ELP result file,没有改变缓冲区中的点。总耗时总是大约 0.6 秒

当我添加一个包含语句(如 #include <stdio.h> )时,时间会更改为 2.5 秒 。这是一个相应的 ELP result

在我的 linux 环境中,相同的基准测试永远不会超过 0.1 秒。 (相同的硬件,Debian 的 23.1 Emacs,CEDET v1.0)

任何想法我的设置可能有什么问题?

最佳答案

事实证明,编译 CEDET 抛出了一堆我一开始没有注意到的错误:

semantic-analyze.el:178:1:Error: Symbol's value as variable is void: filename

其中 导致 81 个文件未编译而导致速度变慢。

Google suggests 此错误可能与高于 23.1 的 Emacs 版本有关。

如果您使用 cedet-build.el 编译 CEDET,请尝试以下解决方法:
Add (setq filename nil) to the beginning of cedet-build.el

关于emacs - CEDET语义分析器在其他快速系统上相当慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4903573/

10-13 02:57