kinerja `melihat-kembali`

10

Saya punya beberapa kode (looking-back … (line-beginning-position)). Doc string looking-backmenyatakan bahwa lebih baik untuk menghindari fungsi ini karena kelambatan. Saya ingin tahu apakah pendekatan berikut akan lebih cepat?

(save-excursion
  (goto-char (line-beginning-position))
  (looking-at regexp stuff))
Geradlus_RU
sumber
Itu akan lebih cepat. Tapi ini bukan kode yang setara.
abo-abo
@ abo-abo, ya, tidak. Tetapi dalam kasus saya, saya percaya saya dapat memperkenalkan looking-atversi dengan mudah. Terima kasih.
Geradlus_RU
2
Masalah kinerja terbesar dari melihat ke belakang adalah ketika tidak memiliki batas (atau batas yang jauh). Jika Anda mempertimbangkan (with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))Anda akan melihatnya sangat cepat. Sekarang ganti regexp menjadi ".*y": itu lambat tak tertahankan meskipun jelas bagi pembaca manusia bahwa ini tidak pernah bisa cocok.
YoungFrog

Jawaban:

9

Pastinya. Anda terutama akan mendapatkan jika Anda hanya ingin menguji char-beforeatau mencari string literal. Dan jika Anda harus menggunakan looking-backmaka coba gunakan LIMITargumen, jika memungkinkan.

Lihat Emacs bug # 17284 sebagai contoh.

Drew
sumber