CEDET Semantic Analyzer довольно медленный в других быстрых системах
Моя тестовая установка: 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 ответ
Оказалось, что компиляция 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