我的测试设置:
英特尔双核 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/