четверг, 17 ноября 2005 г.

Ускоряем работу emacs/gnus

На самом деле работа emacs и gnus происходит в достаточной мере быстро. Но ручная доводка никогда не бывает лишней.

Начнем с общего ускорния работы емакса и гнуса. Первым делом устанавливаем суммарное количество памяти, которое должна быть выделенно в процессе работы emacs'а, чтобы произошла сборка мусора. По-умолчанию это значение равно 450000 (450килобайт), что означает необходимость производить сборку мусора после отъедания emacs'ом очередным ~450к ОЗУ. Современные машины имеют приличный объем памяти и мы можем пожертвовать под мусор лишние ~6мб ОЗУ. Теперь сборка мусора будет срабатывать значительно реже. (сборка мусора есть процесс сканирования всей памяти используемой emacs'ом и поиск тех участков которые более не нужны и их освобождение... процесс этот как и любой другой требует вычислительных ресурсов)
(setq gc-cons-threshold 6000000)

Есть еще один способ которым можно ускорить загрузку и работу emacs'а на какой-то процент - это байт-компиляция конфигурационных файлов. У меня сделано это следующим образом: в конфиге указаны файлы, которые необходимо перекомпилировать при их обновлении. Перекомпиляция производится по необходимости при закрытии буфера с файлом:

;; - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - -
;; Следим за лисповыми файлами которые надо компилировать при их обновлении

(defmacro my-watch-and-byte-compile (sourcefile compiledfile)
`(add-hook 'kill-buffer-hook
(lambda ()
"Hook for updating file"
(when (and (string-equal buffer-file-name (expand-file-name ,sourcefile))
(file-newer-than-file-p ,sourcefile ,compiledfile)
(y-or-n-p (concat "byte-compile " ,sourcefile " to " ,compiledfile " ? ")))
(byte-compile-file ,sourcefile)
)
)
)
)

(my-watch-and-byte-compile "~/.emacs" "~/.emacs.elc")
(my-watch-and-byte-compile "~/.gnus" "~/.gnus.elc")

Компилировать необходимо не только файлы конфигурации (которые по сути есть elisp программы), но и прочие подгружаемые файлы написанные на языке elisp. В моем случае это все файлы лежащие в каталоге ~/elisp/. Компиляция отдельно взятого файла производится командой M-x byte-compile-file. Ну и наконец можно ускорить работу gnus'а, добавив в конец файла ~/.gnus такую вот строчку:
(gnus-compile)

В результате будет происходить компиляция различных параметров, что приведет к увеличению скорости вхождения в группу (за счет увеличения скорости создания списка писем - генерации summary).

Комментариев нет:

Отправить комментарий