GNU bug report logs -
#23278
25.0.92; font-lock-ensure is too slow
Previous Next
Reported by: Dmitry Gutov <dgutov <at> yandex.ru>
Date: Tue, 12 Apr 2016 19:50:01 UTC
Severity: normal
Tags: patch
Found in version 25.0.92
Done: Dmitry Gutov <dgutov <at> yandex.ru>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#23278: 25.0.92; font-lock-ensure is too slow
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 23278 <at> debbugs.gnu.org.
--
23278: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23278
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
On 05/07/2016 11:27 AM, Eli Zaretskii wrote:
> If you run with this since the time of your message and saw no
> problems, please push to emacs-25. Otherwise, to master.
I didn't, and upon further consideration that patch had a bug (failed
'jit-lock-fontify-mends-the-gaps' in the newly added jit-lock-tests.el).
I've pushed an updated patch to master, thanks.
[Message part 3 (message/rfc822, inline)]
Example:
Open xdisp.c, navigate to the first line. Evaluate:
(load "jit-lock")
(benchmark 1000 '(font-lock-ensure (line-beginning-position)
(line-end-position)))
=> 0.66s
Which puts a dampener on the idea of syntax highlighting xref results in
the open files.
With the patch below, the benchmark executes 100 times faster.
OK to apply?
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index 810c220..a582c48 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -387,10 +387,11 @@ jit-lock-fontify-now
;; Fontify chunks beginning at START. The end of a
;; chunk is either `end', or the start of a region
;; before `end' that has already been fontified.
- (while (and start (< start end))
- ;; Determine the end of this chunk.
- (setq next (or (text-property-any start end 'fontified t)
- end))
+ (while (and start
+ (< start
+ ;; Determine the end of this chunk.
+ (setq next (or (text-property-any start end 'fontified t)
+ end))))
;; Fontify the chunk, and mark it as fontified.
;; We mark it first, to make sure that we don't indefinitely
In GNU Emacs 25.0.92.12 (x86_64-unknown-linux-gnu, GTK+ Version 3.16.7)
of 2016-04-10 built on axl
Repository revision: 20686f7a6430ef37f17b3866f14e7dc3095c1524
Windowing system distributor 'The X.Org Foundation', version 11.0.11702000
System Description: Ubuntu 15.10
This bug report was last modified 9 years and 18 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.