On 8/28/2023 4:49 PM, Paulo Roberto Massa Cereda wrote:
Dear friends,

I beseech your wisdom. :) In my tests, I noticed LuaTeX 2023 is
significantly slower than the 2022 counterpart. Here's a MWE:

--------8<--------
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur
sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.
\bye
--------8<--------

Benchmark 1: texlive/2022/bin/x86_64-linux/luatex test.tex
   Time (mean ± σ):     177.7 ms ±   1.4 ms    [User: 140.9 ms, System: 36.6 ms]
   Range (min … max):   175.8 ms … 180.3 ms    16 runs

Benchmark 2: texlive/2023/bin/x86_64-linux/luatex test.tex
   Time (mean ± σ):     286.7 ms ±   2.3 ms    [User: 246.1 ms, System: 40.3 ms]
   Range (min … max):   284.0 ms … 291.2 ms    10 runs

Summary
   texlive/2022/bin/x86_64-linux/luatex test.tex ran
     1.61 ± 0.02 times faster than texlive/2023/bin/x86_64-linux/luatex test.tex

I initially had tried with LuaLaTeX and got similar results. Ulrike
Fischer and Marcel Krüger kindly helped me find out what was going on,
but we could not find anything relevant. I've tried:

- loading a custom OTF font: 2022 was 1.53 ± 0.02 (cold cache) and
1.83 ± 0.03 (existing cache) times faster
- loading the default OTF font: 2022 was 1.68 ± 0.02 (cold cache) and
2.02 ± 0.03 (existing cache) times faster
- HarfBuzz: 2022 was 1.57 ± 0.02 times faster (cold cache) and 1.84 ±
0.05 times faster (existing cache)
- raw feature (normalize): 2022 was 1.81 ± 0.03 times faster
- updated luaotfload-tool in TL2022: 2022 was 1.83 ± 0.01 times faster
- no OTF: 2022 was 1.95 ± 0.02 times faster

I was wondering if someone could shed some light into this. :) Thanks!
I can't test it here (no 2022 installed and i;m also nto going to fdo that) but you need to define

- cold cache
- custom OTF
- default OTF
- raw feature

as i have no clue what that means here. Also, a simple single paragraph is no real test. How does it look for 50 pages. What for a more complex document of say 300 pages. In a simple test startup time (whatever needs to be initialized) kicks in. So, what if no fonts are loaded ta all. If you use plain, what fonts gets loaded by default.

I can't really compare (laptop windows 10) but using my plain version it needs .5 sec for a single li, 1.2 seconds for 100 pages of it, 4.48 seconds for 500 pages.

As a comparison, context needs 5.2 sec for 500 pages in node mode and 3.65 sec in base mode (luametatex: 5.15 and 3.45 with 1.6 sec spend in backend). Anywway over 80 pps for a simpel document like this which will of course drop down to 20-40 pps for a more complex document.

Some 0.1 seconds loss between versions is not dramatic unless if multiplies with largers runs.

(btw, i'd expect windows to be a bit more sensitive between years depending on native vs crosscompiled and tighter mem protection between versions.)

So, a question is: what is the fontless baseline? What if you compile a binary for your system yourself? Is this only plain or also other macro packages?

Another thing I can think of is that format loading time changed maybe because of a change in endian related storage. I remember some discussion about that (portable formats) and on intel byte swapping then kicks in. But again that's only startup time related.

Hans


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------

Reply via email to