bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#13369: 24.1; compile message parsing slow because of omake hack


From: Mattias Engdegård
Subject: bug#13369: 24.1; compile message parsing slow because of omake hack
Date: Wed, 9 Jan 2013 12:11:33 +0100

9 jan 2013 kl. 02.47 skrev Stefan Monnier:

all   no omake   gnu only
32.7     3.4        0.3      standard code
6.8     3.4        0.3      repaired regexp (escaped ^)
3.4     3.4        0.3      COND expression removed
OK, thank you. So having fixed the omake ^ issue, basically to me it
just seems to be the case that the more entries are in
compilation-error-regexp-alist, the slower things get.
Maybe we should encourage people to prune it to only the entries they
use, or maybe some less common elements should not be there by default.

Yes, every entry costs time, which is why I've been resisting adding
more entries and would rather push the problem upstream to convince the
tools's authors to stick to the standard GNU message format.

Note however that the omake is still special - while its own regexp is
fast and simple, its mere presence in the list causes the remaining
parsing to become twice as slow (as seen from the measurements above).
I'm also still somewhat suspicious of how the hack mutilates other
regexps in ways that may change their meaning.

In addition to fixing the regexp, I suggest omake be disabled by
default because of its impact and since it's somewhat of a special need.

I think compile.el would benefit from a different regex engine where we
could do a lex-style union of all regexp into a single automaton.

That would be nice, especially if the result could be a DFA.
I would also suggest switching to rx notation for the regexps.
(The ^ quoting bug is one that would never have occurred with rx,
and that is a very small regexp.)

I actually wrote a simple regexp-to-rx translator, like rx in reverse,
just to be able to make sense of the ones in compile.el. I'd be happy
to share.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]