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

From: Mattias Engdegård <[email-masked]>
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.