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
-----------------------------------------------------------------