практические ограничения на размер файла в режиме орг?

13

У меня есть файл в режиме org, который содержит около 6000 строк с сотнями заголовков верхнего уровня. На загрузку или сохранение уходит около минуты, и иногда он отправляет emacs в сорняки, и мне приходится принудительно выходить из него.

Кто-нибудь из вас думает, что это слишком большой файл для обработки практически в режиме org? У вас есть опыт работы с большими файлами? Вы испытываете такие же задержки? Или я должен искать в других местах причины медлительности, как и все другие пакеты emacs, которые я установил? Может быть, я просто слишком много спрашиваю о emacs.

Это с homebrew emacs 24.4 на Mac OS X Mavericks.

Reb.Cabin
источник
2
Вы используете что-то еще вместе с этим, как linum-mode? Какие другие специальные минорные режимы активны (если есть)?
юрист
У меня слишком много, чтобы перечислять ... Я начал с emacs-live (набор инструментов clojure) и загружал все интересные пакеты, которые я мог найти в elpa и marmalade. Я собираюсь сделать тест с простой установкой Emacs; если режим org работает нормально, тогда я начну разбивать свои пакеты. Хорошее время, чтобы начать все сначала.
Reb.Cabin
2
Этот файл не слишком большой для обработки. У меня есть опыт работы с 7000- строчным файлом github.com/grettke/home/blob/master/ALEC.org и очень немногими заголовками. Я не испытываю нагрузки или сохраняю медлительность. Я замедляюсь, когда сворачиваю заголовки, поэтому я бегу с #+STARTUP: showeverything. У вас есть новейший Emacs, который поставляется с новейшим орг-режимом. Запустите Emacs emacs -Qи медленно добавляйте обратно пакеты, чтобы сузить мешающий пакет, замедляя работу. Я нахожусь на "24.4.1" и "8.2.10" emacs и org.
Греттке

Ответы:

18

Одна из менее известных особенностей Emacs - у него есть профилировщик! Давайте предположим, что ваш файл называется foo.org, тогда вы можете сделать это:

M-xprofiler-start

C-x ffoo.org

M-xprofiler-report

После того, как вы все это сделаете, Emacs отобразит буфер со статистикой использования ЦП (вы также можете выбрать профилирование памяти или ЦП и памяти при запуске профилировщика). Это должно дать вам некоторые подсказки относительно того, какие функции выполняются чаще всего.

wvxvw
источник
Кажется, что если в моем буфере более 7 тыс. Строк, он имеет очень длинные паузы. Вы знаете, почему это так?
user8128167
@ user89861 Моей первой догадкой было бы оформление, но без попыток профилировать сложно сказать.
wvxvw
Хорошо, вот что я получаю для отчета профилировщика: + таймер-обработчик событий 408694 96% + команда-выполнение 14634 3% + ... 1480 0% + redisplay_internal (функция C) 183 0% + isearch-pre-command -hook 1 0%
user8128167
@ user89861 посмотрим, даст ли какая-либо из этих двух переменных: stackoverflow.com/a/11670718/5691066 подсказку о том, какой таймер был запущен.
wvxvw
3

Я удалил каждый пакет из моей среды emacs, и теперь режим org работает в моем файле длиной 6000 строк.

Другая вещь, которую я загрузил, вызывала проблему. Мне придется разделить мои установки пакета, чтобы выяснить, что это такое, но режим org теперь выглядит нормально.

Reb.Cabin
источник
Сделал свежую установку emacs-live - проблем не было.
Reb.Cabin
Если на ваш вопрос был получен удовлетворительный ответ и вам не нужны дополнительные ответы, рассмотрите возможность принятия вашего ответа, чтобы он был удален из списка оставшихся без ответа вопросов.
Дрю
@Drew - есть период ожидания, чтобы принять собственный ответ - что-то вроде 36 или 48 часов.
законник
1
@lawlist: ОК. Но нет списка ожидания для размышлений о том, хотите ли вы просто удалить вопрос, потому что вопросы и ответы могут быть не такими полезными / интересными. ;-)
Дрю
3
вопрос раскопал интересный момент о профилировщике, поэтому у вопроса была полезная сторона / эффект :)
Reb.Cabin