gregorio-project / gregorio-test

A repository of tests for Gregorio
GNU General Public License v3.0
5 stars 3 forks source link

Multi-Pass Optimization #276

Open rpspringuel opened 7 years ago

rpspringuel commented 7 years ago

I had another of my occasional brainstorms about how we might make the running of the tests more efficient (i.e. faster). As with my other ones, no one should feel obliged to work on this if they don't want to. I'm posting it here to spark some discussion on the merits of the idea and to remind myself to do more research into the idea when I get the time.

We have some features which require multiple passes of the document through Lua(La)TeX in order to get the final output. Further, these features are on by default but can be turned off, allowing for single pass documents. However, really only the tests which are designed to look at the multi-pass features need them to be active. Since most of the tests in the repository are not concerned with these multi-pass features, turning them off for the bulk of the tests would speed up the testing process.

henryso commented 7 years ago

I don't think these features can really be turned off. The system can be made not to recalculate anything, but there will be problems even with simple documents (most notably: line height).

rpspringuel commented 7 years ago

\gresetlineheightexpansion{uniform} should activate the old single-pass behavior where all lines were given the space needed for the largest line, regardless of whether a particular line needed it. Or has that changed since the variable line heights were implemented? Assuming it hasn't, the extra space shouldn't create a testing problem unless we're actually looking at the line heights.

IIRC, the other multi-pass features are variable brace widths and ragged line breaks before an EOUAE area. The former can't be turned off, per se, but most test documents don't have braces in them at all, let alone variable ones. The latter can be turned off (or rather, the line breaks set to justified) which is, in fact, the default for that feature.

Are there any other multi-pass features I'm not accounting for?

rpspringuel commented 7 years ago

Using a run of just the gabc-output tests as a sample, it takes roughly 29 minutes to run through those tests without verifying the results. After adding \gresetlineheightexpansion{uniform} to the preamble of the gabc-output tex template, the same tests take about 26minutes. That's about a 10% improvement, so I think I'll explore this a bit more when I have some more time.