2011-02-04 2 views
4

Моя тестовая установка: Intel Dual Core 3GHz, Windows XP 32 бит, Emacs 23.2.1, CEDET v1.0 (байт-скомпилированный, как описано в документах INSTALL).CEDET Semantic Analyzer довольно медленный в противном случае быстрая система

Файл инициализации Emacs состоит только из этих четырех линий:

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

При открытии файла C++, который включает в себя только одну функцию, завершая, что одна функция с помощью (семантико-IA-полный-символ) завершается только после того, как заметное отставание, даже после повторных попыток.

Оценка semantic-analyze-current-context показывает, что медлительность вызвана семантическим анализатором.

Вот ELP result file после запуска semantic-elp-analyze несколько раз, без изменения точки в буфере. Общее истекшее время всегда составляет 0,6 секунды.

Когда я добавляю оператор включения, например #include <stdio.h>, тайминги меняются на 2,5 секунды. Вот соответствующий ELP result.

Те же тесты никогда не занимают больше 0,1 секунды в моей среде Linux. (То же аппаратное обеспечение, Debian 23.1 Emacs, CEDET v1.0)

Любые идеи, что может быть неправильным в моей настройке?

+1

Вы байты скомпилированного Cedet? –

+0

Были ошибки с байтовой компиляцией. Спасибо за указатель! –

ответ

3

Оказался, что составление Cedet бросил кучу ошибок я не заметил первый:

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

Каких вызвал замедление, оставляя 81 файлов Неоткомпилированных.

Google suggests Эта ошибка может быть связана с версиями Emacs, новее 23.1.

Если вы используете Cedet-build.el для компиляции Cedet, попробуйте следующий обходной путь:

Add (setq filename nil) to the beginning of cedet-build.el 
+1

Это исправлено в версии разработки CEDET, которую вы можете получить, выполнив «bzr checkout bzr: //cedet.bzr.sf.net/bzrroot/cedet/code/trunk» – pokita