>>>> "Hrvoje" == Hrvoje Niksic
<hniksic(a)xemacs.org> writes: 
    Hrvoje> Adrian Aichner <adrian(a)xemacs.org> writes:
> I identified the performance issue today.
> 
> It's present in both (defun operate-on-non-matching-lines
> (regexp delete kill &optional beg end) and (defun
> operate-on-matching-lines (regexp delete kill &optional beg
> end) due to the way they the count lines (a feature the GNU
> Emacs version does not have) by first concating each match to a
> string.  This causes enormuous consing and the resulting GC
> activity makes performance unbearable at the default
> gc-cons-threshold value. 
    Hrvoje> Why was this not a problem in pre-21.5 XEmacsen?  Or was
    Hrvoje> it something that was just as slow, only it was never
    Hrvoje> noticed?
I suspect that there was no GCing until about a year ago.  Around the
release of 21.4.12, Martin provided a patch to count big string
allocation in the consing counter.  Before then, it was possible to
ENOMEM XEmacs with
                   (while t (make-string 10000 ?a))
because big string allocation wasn't included in the cons count.
-- 
Institute of Policy and Planning Sciences     
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba                    Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
               Ask not how you can "do" free software business;
              ask what your business can "do for" free software.