`มองย้อนกลับไป 'ประสิทธิภาพ


10

(looking-back … (line-beginning-position))ฉันมีโค้ดบางส่วนใช้ สตริงของเอกสารlooking-backระบุว่าดีกว่าที่จะหลีกเลี่ยงฟังก์ชั่นนี้เพราะความเชื่องช้า ฉันอยากรู้อยากเห็นว่าการเข้าใกล้จะเร็วขึ้นไหม

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

มันจะเร็วขึ้น แต่นี่ไม่ใช่รหัสที่เทียบเท่ากัน
abo-abo

@ abo-abo ใช่แล้วไม่ใช่ แต่ในกรณีของฉันฉันเชื่อว่าฉันสามารถแนะนำlooking-atเวอร์ชันได้อย่างง่ายดาย ขอบคุณ.
Geradlus_RU

2
ปัญหาด้านประสิทธิภาพที่ใหญ่ที่สุดของการมองย้อนกลับคือเมื่อไม่มีขีด จำกัด (หรือขีด จำกัด ที่อยู่ไกล) หากคุณพิจารณา(with-temp-buffer (insert (make-string 10000 ?x)) (looking-back "y"))คุณจะเห็นว่ารวดเร็วมาก ตอนนี้เปลี่ยน regexp ".*y"เป็น: มันช้าเหลือทนแม้ว่าจะชัดเจนต่อผู้อ่านของมนุษย์ที่สิ่งนี้ไม่สามารถเทียบได้
YoungFrog

คำตอบ:


9

อย่างแน่นอน. คุณจะได้รับโดยเฉพาะอย่างยิ่งถ้าคุณต้องการทดสอบchar-beforeหรือค้นหาย้อนหลังสำหรับสตริงตัวอักษร และถ้าคุณต้องใช้looking-backให้ลองใช้LIMITอาร์กิวเมนต์ถ้าเป็นไปได้

ดูข้อผิดพลาด Emacs # 17284ตัวอย่างเช่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.