GNU bug report logs -
#63040
30.0.50; Performance of buf_bytepos_to_charpos when a buffer has large number of markers
Previous Next
Full log
View this message in rfc822 format
> From: Ihor Radchenko <yantar92 <at> posteo.net>
> Date: Sun, 23 Apr 2023 19:41:40 +0000
>
> When investigating `re-search-forward' performance in
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=58558 (bug#58558), I
> noticed that buf_bytepos_to_charpos is taking most of the CPU time,
> according to perf stats.
>
> This was partially caused by `parse-sexp-lookup-properties', but even
> after working around the text property issue, buf_bytepos_to_charpos
> still shows up on top of the perf profile.
>
> Since one of the apparent bottlenecks in buf_bytepos_to_charpos is
>
> for (tail = BUF_MARKERS (b); tail; tail = tail->next)
>
> which obviously scales with the number of markers in buffer, I decided
> to add a cut-off parameter, as in the attached patch (number 50 has no
> particular motivation underneath).
>
> Surprisingly, this simple change reduced my Org agenda generation times
> from 20 seconds down to 3-4 seconds!
>
> I am sure that my dumb approach is not the best way to improve the
> performance, but this place in buf_bytepos_to_charpos is clearly
> something that can be optimized.
Interesting. Would it be possible to show the effect of different
values of the cut-off on the performance, so we could decide which
value to use?
Thanks.
This bug report was last modified 354 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.