emacs-devel
[Top][All Lists]
Advanced

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

Progressively slow pattern match


From: Ralf Angeli
Subject: Progressively slow pattern match
Date: Wed, 17 May 2006 21:33:18 +0200

In AUCTeX there is a regexp used with `looking-at' where pattern
matching seems to progressively get slower the longer a part of the
(possible) match gets.  I reduced the regexp to a bare minimum for
testing and the code now looks something like this:

(looking-at "\\(%+\\)*foo")

The problem occurs if this is used against a line with only %
characters in it.  The more of these characters there are the slower
it gets.  I checked the time one call of `looking-at' takes with
(abs (- (float-time) (progn (looking-at "\\(%+\\)*foo") (float-time))))
and got the following results (in seconds):

%%%%%%%%%%                 0.0006
%%%%%%%%%%%%%%%            0.0154
%%%%%%%%%%%%%%%%%%%%       0.5132
%%%%%%%%%%%%%%%%%%%%%%%%%  7.8058

The regexp is used with `looking-at' for checking if there are LaTeX
macros which have to be treated specially during paragraph movement.
As paragraph movement is used quite extensively when a region is to be
filled, users might get the notion that they are experiencing a hang
if they have such line for visually separating parts in the file.

Is this a deficiency in Emacs?  Is there a way matching can be sped up
with this or maybe another, equivalent regexp?

-- 
Ralf




reply via email to

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