GNU bug report logs - #23278
25.0.92; font-lock-ensure is too slow

Previous Next

Package: emacs;

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

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Dmitry Gutov <dgutov <at> yandex.ru>
Subject: bug#23278: closed (Re: bug#23278: 25.0.92; font-lock-ensure is
 too slow)
Date: Sat, 07 May 2016 23:12:01 +0000
[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)]
From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 23278-done <at> debbugs.gnu.org
Subject: Re: bug#23278: 25.0.92; font-lock-ensure is too slow
Date: Sun, 8 May 2016 02:10:26 +0300
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)]
From: Dmitry Gutov <dgutov <at> yandex.ru>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.0.92; font-lock-ensure is too slow
Date: Tue, 12 Apr 2016 22:49:09 +0300
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.