Что может вызвать эту проблему? Это связано с Emacs или с производительностью моего компьютера? Каковы переменные, влияющие на производительность Emacs?
Emacs имеет около 50 000 внутренних переменных и несколько тысяч внешних пакетов, усредненных по нескольким дюжинам переменных в каждой. Вы не можете ожидать, что кто-то ответит на это в общем смысле. :-)
Вы можете увидеть это, просто взглянув на ветку комментариев под своим вопросом. Там есть полдюжины разных предложений, все одинаково действительны.
Что вы можете сделать, чтобы точно определить проблему?
Вариант 1: отключить режимы
Начните отключать те второстепенные режимы, которые вы перечислили, и посмотрите, какой из них решает проблему с производительностью. Я хотел бы начать с smartparens
, auto-complete
, line-number
и font-lock
, а затем следуют вниз по списку.
«У меня не было этой проблемы вчера» означает очень мало, не полагайтесь на это слишком сильно. Просто начните отключать второстепенные режимы, пока что-то не решит.
Если ни один из второстепенных режимов не устранил вашу проблему, то начните комментировать части вашего файла инициализации, пока не выясните, какой фрагмент вызвал это. В любом случае, задавайте новый вопрос, когда у вас есть что-то более конкретное.
Вариант 2: профилировщик
- Вызывать
M-x profiler-start RET RET
(второе RET
подтверждение cpu
);
- Наберите текст, желательно целый абзац или более;
- Invoke
M-x profiler-report
.
Это даст вам буфер, описывающий время процессора для каждой функции. Нажатие TAB
на строку расширяет ее для отображения функций внутри нее. Перемещайтесь по этому буферу, пока не выясните, какая функция отнимает так много времени процессора.
Что мне делать потом?
Как только вы найдете функцию, пакет или фрагмент, вызывающий задержку, вы можете (без определенного порядка):
- Задайте новый вопрос здесь относительно этого специфического вспомогательного режима (или функции или фрагмента).
- Сообщить об ошибке сопровождающему пакета.
- Проверьте комментарии в верхней части исходного файла пакета. Если он содержит URL (особенно на github), то, вероятно, там есть система отслеживания проблем.
- Некоторые пакеты предлагают команду вроде
M-x PACKAGE-bug-report
.
- Его или ее адрес электронной почты должен быть в верхней части исходного файла пакета.
- Если это встроенный пакет, вы можете сообщить об этом
M-x report-emacs-bug
.
- Даже для пакетов, которые не являются встроенными, вы можете обратиться за помощью в
help-gnu-emacs
список рассылки.
C-h m
покажет основной режим и все второстепенные режимы, которые активны. Вы можете медленно отключать каждый второстепенный режим, пока не найдете причину. Это может быть основной режим, но второстепенные режимы являются наиболее вероятными подозреваемыми. Без указания того, какие режимы вы используете, кто-нибудь здесь будет просто в темноте нанести удар по тому, что происходит с вашей проблемой. У меня есть редкая ситуация, которая возникает с некоторыми специальными изображениями - например, когда кто-то отправляет мне электронное письмо с символом телефона или другими специальными символами в iPhone - но это отдельная проблема замедления, вызванная специальными символами.