CEDET 语义分析器在其他快速系统上相当慢
我的测试设置: Intel 双核 3GHz、Windows XP 32 位、Emacs 23.2.1、CEDET v1.0(按照安装文档中所述进行字节编译)。
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 结果文件 ,而不改变缓冲区中的点。总运行时间始终约为0.6 秒。
当我添加包含语句(例如 #include
)时,计时更改为 2.5 秒。以下是相应的 ELP 结果。
在我的 Linux 环境中,相同的基准测试花费的时间不会超过 0.1 秒。 (相同的硬件,Debian 23.1 Emacs,CEDET v1.0)
您知道我的设置可能有什么问题吗?
My test setup:
Intel Dual Core 3GHz, Windows XP 32 bit, Emacs 23.2.1, CEDET v1.0 (byte-compiled as described in the INSTALL docs).
The Emacs init file only consists of these four lines:
(load "~/vendor/cedet/common/cedet.el")
(semantic-load-enable-code-helpers)
(require 'semantic-ia)
(global-ede-mode 1)
When opening a C++ file that includes just one function, completing that one function via (semantic-ia-complete-symbol) finishes only after a noticable lag, even after repeated tries.
Evaluating semantic-analyze-current-context
shows that the sluggishness is caused by the Semantic analyzer.
Here's the ELP result file after running semantic-elp-analyze
several times, without changing the point in the buffer. The total elapsed time is always about 0.6 seconds.
When I add an include statement, like #include <stdio.h>
, the timings change to 2.5 seconds. Here's a corresponding ELP result.
The same benchmarks never take longer than 0.1 seconds in my linux environment. (Same hardware, Debian's 23.1 Emacs, CEDET v1.0)
Any ideas what could be wrong with my setup?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事实证明,编译 CEDET 引发了一堆我一开始没有注意到的错误:
这些错误导致 81 个文件未编译而导致速度变慢。
Google 建议此错误可能与高于 23.1 的 Emacs 版本有关。
如果您使用 cedet-build.el 编译 CEDET,请尝试以下解决方法:
It turned out that compiling CEDET threw a bunch of errors I didn't notice at first:
Which caused the slowdown by leaving 81 files uncompiled.
Google suggests this error might be related to Emacs versions newer than 23.1.
If you use cedet-build.el for compiling CEDET, try the following workaround: