|
From: | Herbert Euler |
Subject: | Re: Patch: Syntax and Hard Newlines |
Date: | Wed, 29 Nov 2006 12:06:12 +0800 |
I'm not completely sure whether your measurements are fair. Have you made sure that syntax-ppss's caching doesn't give an unfair advantage to one or the other? I'd suggest to try with a real "micro-benchmark" and use parse-partial-sexp rather than syntax-ppss. You could also do it in a real buffer (e.g. turn off jit-lock, load a big Perl file: font-lock should place a fair bit of syntax-table properties in there, then call parse-partial-sexp with and without parse-sexp-lookup-properties).
I copied the content of http://www.cpan.org/authors/id/W/WA/WAYNEM/betsie-1.5.12.pl many times so that got a Perl file of 268274172 bytes (257 MB). I then evaluated the following forms: (save-window-excursion (find-file "~/1.pl")) => #<buffer 1.pl> (let (old-time time-diff (parse-sexp-lookup-properties nil)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 952121) (let (old-time time-diff (parse-sexp-lookup-properties t)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 977639) (let (old-time time-diff (parse-sexp-lookup-properties nil)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 936413) (let (old-time time-diff (parse-sexp-lookup-properties t)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 941655) (let (old-time time-diff (parse-sexp-lookup-properties nil)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 936427) (let (old-time time-diff (parse-sexp-lookup-properties t)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 985199) (let (old-time time-diff (parse-sexp-lookup-properties nil)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 928313) (let (old-time time-diff (parse-sexp-lookup-properties t)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 928447) (let (old-time time-diff (parse-sexp-lookup-properties nil)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 13 70452) (let (old-time time-diff (parse-sexp-lookup-properties t)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 929632) (let (old-time time-diff (parse-sexp-lookup-properties nil)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 926650) (let (old-time time-diff (parse-sexp-lookup-properties t)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 929234) (let (old-time time-diff (parse-sexp-lookup-properties nil)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 978655) (let (old-time time-diff (parse-sexp-lookup-properties t)) (save-window-excursion (switch-to-buffer "1.pl") (font-lock-mode -1) (goto-char 268273054) (jit-lock-mode nil) (font-lock-mode 1) (setq old-time (current-time)) (parse-partial-sexp 1 (point)) (setq time-diff (time-subtract (current-time) old-time))) time-diff) => (0 12 928371) Can I conclude from this result that `parse-sexp-lookup-properties' has no effect over syntax parsing? Regards, Guanpeng Xu _________________________________________________________________Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
[Prev in Thread] | Current Thread | [Next in Thread] |