'огляд назад'


10

У мене є використання коду (looking-back … (line-beginning-position)). Док-рядок looking-backстверджує, що краще уникати цієї функції через повільність. Мені цікаво, чи буде наступний підхід швидше?

(save-excursion
  (goto-char (line-beginning-position))
  (looking-at regexp stuff))

Це буде швидше. Але це не еквівалентний код.
або-або

@ Або-Або, так, це не так. Але в моєму випадку я вважаю, що можу легко представити looking-atверсію. Дякую.
Geradlus_RU

2
Найбільший показник ефективності при огляді - це коли він не має межі (або межі, що далеко). Якщо ви вважаєте, (with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))ви побачите, що це дуже швидко. Тепер замініть ".*y"замість цього регулярний вираз : він нестерпно повільний, хоча людському читачеві зрозуміло, що це ніколи не може відповідати.
ЯнгФрог

Відповіді:


9

Безумовно. Особливо ви отримаєте, якщо просто хочете протестувати char-beforeабо шукати назад буквальний рядок. І якщо ви повинні використовувати, looking-backто спробуйте використовувати LIMITаргумент, якщо це можливо.

Для прикладу див. Помилку Emacs №17284 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.