CEDET Semantic Analyzer довольно медленный в других быстрых системах - PullRequest
4 голосов
/ 05 февраля 2011

Моя тестовая настройка: Intel Dual Core 3GHz, 32-разрядная ОС Windows XP, Emacs 23.2.1, CEDET v1.0 (скомпилирована как описано в документации INSTALL).

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

(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 показывает, что медлительность вызвана семантическим анализатором.

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

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

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

Есть идеи, что может быть не так с моей настройкой?

1 Ответ

3 голосов
/ 05 февраля 2011

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

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

Что вызвало замедление, оставив 81 файл без компиляции.

Google предлагает эта ошибка может быть связана с версиями Emacs новее 23.1.

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

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