On Sat, Jun 21, 2025 at 10:54 PM Luca Fascione <l.fasci...@gmail.com> wrote: > Here are some partial timings, taken on my mac laptop (2019, 2,3 GHz 8-Core > Intel Core i9), > all code single-threaded. > > Here's the execution log: > > Parsing scene '/Users/lukes/Documents/src/undvips/tex/schintro_outline.udps' > Parse complete 1156.21 ms
This is plenty fast. IIRC, lilypond itself takes about 240s to run through ~1200 regtests, so as long as time per test is around or below 200ms, we should be fine. > Missing bits: if people think this idea has merit, we need something to stand > in the role of my little UDPS file format. I see a couple different avenues It doesn't matter too much, but if I may suggest a shade of bikeshed, something based on json would be nice, so we can easily load data across languages/systems. >1. [..] Measure its performance (it seems to fail on GPL Ghostscript 10.05.1, >I don't know why at the moment). Regrettably I have no notes on how long this >step took when I was last working on this > > 2. Alternatively, and possibly much better, pivot and implement a similar > idea using mupdf library, but using the PDF directly, sidestepping the > PostScript entirely > 3. Alternatively still, instrument some late layer of ... "Cairo" (say) to > emit UDPS directly from the C++ If your PS hack provides final coordinates, I think that will be the least amount of work. While mupdf is a nice, reading the dicts from the PDF file is not enough: you still have to write a 2D graphics stack so you can handle transformations (rotation, scaling, translation), clipping, coloring etc. In theory, 3. is also a nice approach, except Cairo doesn't support this type of instrumentation (at least, I couldn't find any support for it). You'd have to add a feature to Cairo in order to capture commands after all the transformations have been applied, and just before they go onto the raster. > Lastly, my little test is already built to support multiple pages, and this > could be advantageous in that it would save us to run > all the warmup code over and over again. I guess I'm saying: if we can make > it work for the whole set at once we could be looking at which warmup are you concerned about? Except for font-loads, lilypond outputs self-contained (e)ps in the ps backend. In cairo, the files are fully contained. So you have to process the page and font setup repeated for each file. -- Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen