У меня есть код, использующий (looking-back … (line-beginning-position))
. Строка документа looking-back
гласит, что эту функцию лучше избегать из-за медлительности. Мне интересно, будет ли следующий подход быстрее?
(save-excursion
(goto-char (line-beginning-position))
(looking-at regexp stuff))
regular-expressions
performance
save-excursion
Geradlus_RU
источник
источник
looking-at
легко представить версию. Спасибо.(with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))
подумаете, то увидите, что это очень быстро. Теперь".*y"
вместо этого измените регулярное выражение : оно невыносимо медленно, хотя читателю ясно, что оно никогда не сможет сравниться.Ответы:
Определенно. Вы особенно выиграете, если вы просто хотите проверить
char-before
или выполнить поиск литеральной строки в обратном направлении. И если вы должны использовать,looking-back
попробуйте использоватьLIMIT
аргумент, если это возможно.Смотрите Emacs bug # 17284 для примера.
источник