lilypond-user
[Top][All Lists]
Advanced

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

Re: OMG - performance issue with Scheme engraver


From: Aaron Hill
Subject: Re: OMG - performance issue with Scheme engraver
Date: Tue, 10 Jul 2018 07:12:06 -0700
User-agent: Roundcube Webmail/1.3.6

On 2018-07-10 02:56, Urs Liska wrote:
The situation is that a three-page score that takes ~ 2.1 seconds
without the engraver and with the old state of the engraver now needs
5.8 seconds. And a >20 page score that I recall using around 20-25
seconds now needs 57 - so that's obviously nothing to ignore.

On 2018-07-10 03:22, David Kastrup wrote:
Quadratic behavior or worse.

Based on the durations posted, it seems much more linear, as 5.8/2.1 is close enough to 57/22.5. If it were quadratic, then one would have expected the second test case to take closer to 570 seconds. As it stands, the original code was taking about one second per page and now is taking around two seconds per page.

So it sounds like the modification is roughly doubling the amount of work needed overall, but this extra work is more-or-less fixed and not dependent on the size of the problem. This might help narrow the focus by looking at things that have more of a global impact, independent of the amount of markup.

Doing a quick web search turned up Statprof, but sadly that was introduced with Guile 2.0. And nothing much else turned up regarding general purpose profiling tools for Guile other than this section in the docs:

https://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/Profiling-or-Tracing-a-Procedure_0027s-Code.html

I did find a thread on LilyPond performance from over a year ago when it looks like folks were evaluating the newer version of Guile as it was resulting in significant slowdown. So, I would have suggested trying a branch of LilyPond that runs against Guile 2.0 just to be able to make use of the profiling tools; but that sounds like it would be adding more muck to the mix.

-- Aaron Hill



reply via email to

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