Mam trochę kodu (looking-back … (line-beginning-position))
. Dokumentuj ciąg looking-back
stanów, że lepiej jest unikać tej funkcji z powodu spowolnienia. Jestem ciekaw, czy kolejne podejście będzie szybsze?
(save-excursion
(goto-char (line-beginning-position))
(looking-at regexp stuff))
regular-expressions
performance
save-excursion
Geradlus_RU
źródło
źródło
looking-at
wersję. Dziękuję Ci.(with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))
że zobaczysz, to jest bardzo szybkie. Teraz zmień wyrażenie regularne na".*y"
: jest nieznośnie powolne, chociaż dla czytelnika jest jasne, że to nigdy nie będzie pasować.Odpowiedzi:
Zdecydowanie. Szczególnie zyskasz, jeśli po prostu chcesz przetestować
char-before
lub wyszukać literałowy ciąg. A jeśli musisz użyć,looking-back
spróbuj użyćLIMIT
argumentu, jeśli to możliwe.Przykład zawiera błąd Emacsa nr 17284 .
źródło