[luatex] Identifying why LuaTeX 2023 is slower than LuaTeX 2022
Hans Hagen
j.hagen at xs4all.nl
Tue Aug 29 15:38:35 CEST 2023
On 8/29/2023 1:55 PM, Paulo Roberto Massa Cereda wrote:
> Hi Max,
>
> Thanks so much for investigating! I've compiled LuaTeX on my end as
> well and got similar results with both gcc and clang/llvm. I will poke
> Karl about it. :)
>
> Cheerio,
>
> Paulo
So, what are we now looking at? A simple run test.tex with probably one
paragraph and a few fonts loaded (as it's plain). Different versions of
luatex, so there can be small changes, unlikely in the frontend, maybe
some in the backend but we're talking little output here. Is the same
fontloader used for every test (which assume stability over 2017 - 2023)?
Is the luatex build.sh used or some tex live one?
Anyway, we seem to be talking about 120 ms vs 160 ms for a simple
document so we can assume it is startup / initialization time. No
libraries loaded so that can be ruled out. Is the same lua used? These
.40 ms are noise to me anc can originate in several places (going into
details about possible bottlenecks in tex is bit off topic here) so the
question is how this goes for a 1000 ipsum paragraphs.
The simplest startup test i can come upwith (using context) is \stoptext
which gives me with the garden binaries:
3 batches of 100 runs: .244 sec average
when i compline on my laptop:
3 batches of 100 runs: .249 sec average
but i can actually get to this:
3 batches of 100 runs: .265 sec average
So guess what: as i mentioned before there has been a discussion about
portable fmt files (irr a latex request) and the normal luatex build
script has --no-dump-share but araiks tex live doesn't do that (any
longer) so then we get 0.020 sec per run more (2+ sec on 100 runes).
(plain has a very small format so one can wonder if it's the same there
as in other macropackages)
Of course there can be other factors in a non context universe like the
time needed to load a file database (wasn't there a upper / lowercase
checking change recently?), fonts etc. Then when we talk macro packages,
who knows what is done there to initialize matters, and it might be
engine or version dependent. A drop in performance of the engine might
be something one has to accept (as user and developer) but a drop in
performance of macro package is another matter and not something for
this list.
So, for now, maybe check out --no-dump-share and if that doesn't reveal
something, assume the .40 sec is lost forever (or at least for now)
Hans
> Em ter., 29 de ago. de 2023 às 04:15, Max Chernoff <mseven at telus.net> escreveu:
>>
>> Hi Paulo,
>>
>> This seems to be an issue with the specific binary packaged in TL, not
>> with LuaTeX itself. This is what I get:
>>
>>
>> Benchmark 1: PATH=/tmp/texlive-testing/2017/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 132.3 ms ± 8.6 ms [User: 102.6 ms, System: 29.6 ms]
>> Range (min … max): 124.4 ms … 165.2 ms 23 runs
>>
>> Benchmark 2: PATH=/tmp/texlive-testing/2018/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 131.5 ms ± 5.5 ms [User: 100.5 ms, System: 30.8 ms]
>> Range (min … max): 123.8 ms … 140.6 ms 23 runs
>>
>> Benchmark 3: PATH=/tmp/texlive-testing/2019/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 119.1 ms ± 3.9 ms [User: 88.7 ms, System: 30.3 ms]
>> Range (min … max): 113.4 ms … 127.0 ms 25 runs
>>
>> Benchmark 4: PATH=/tmp/texlive-testing/2020/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 119.3 ms ± 3.0 ms [User: 90.5 ms, System: 28.7 ms]
>> Range (min … max): 114.2 ms … 124.1 ms 25 runs
>>
>> Benchmark 5: PATH=/tmp/texlive-testing/2021/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 117.4 ms ± 3.8 ms [User: 87.3 ms, System: 30.0 ms]
>> Range (min … max): 111.1 ms … 123.6 ms 26 runs
>>
>> Benchmark 6: PATH=/tmp/texlive-testing/2022/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 117.8 ms ± 4.6 ms [User: 88.9 ms, System: 28.8 ms]
>> Range (min … max): 109.8 ms … 130.0 ms 25 runs
>>
>> Benchmark 7: PATH=/tmp/texlive-testing/2023/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 118.8 ms ± 4.0 ms [User: 88.4 ms, System: 30.3 ms]
>> Range (min … max): 112.1 ms … 126.0 ms 26 runs
>>
>> Benchmark 8: PATH=/tmp/texlive-testing/2023-initial/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 126.9 ms ± 4.5 ms [User: 96.5 ms, System: 30.3 ms]
>> Range (min … max): 120.9 ms … 135.5 ms 23 runs
>>
>> Benchmark 9: PATH=/tmp/texlive-testing/sys/bin/x86_64-linux:/bin/ luatex test.tex
>> Time (mean ± σ): 166.7 ms ± 4.0 ms [User: 136.5 ms, System: 30.1 ms]
>> Range (min … max): 162.5 ms … 175.9 ms 18 runs
>>
>> Summary
>> PATH=/tmp/texlive-testing/2021/bin/x86_64-linux:/bin/ luatex test.tex ran
>> 1.00 ± 0.05 times faster than PATH=/tmp/texlive-testing/2022/bin/x86_64-linux:/bin/ luatex test.tex
>> 1.01 ± 0.05 times faster than PATH=/tmp/texlive-testing/2023/bin/x86_64-linux:/bin/ luatex test.tex
>> 1.01 ± 0.05 times faster than PATH=/tmp/texlive-testing/2019/bin/x86_64-linux:/bin/ luatex test.tex
>> 1.02 ± 0.04 times faster than PATH=/tmp/texlive-testing/2020/bin/x86_64-linux:/bin/ luatex test.tex
>> 1.08 ± 0.05 times faster than PATH=/tmp/texlive-testing/2023-initial/bin/x86_64-linux:/bin/ luatex test.tex
>> 1.12 ± 0.06 times faster than PATH=/tmp/texlive-testing/2018/bin/x86_64-linux:/bin/ luatex test.tex
>> 1.13 ± 0.08 times faster than PATH=/tmp/texlive-testing/2017/bin/x86_64-linux:/bin/ luatex test.tex
>> 1.42 ± 0.06 times faster than PATH=/tmp/texlive-testing/sys/bin/x86_64-linux:/bin/ luatex test.tex
>>
>>
>> The "20xx" binaries are freshly-built versions of the LuaTeX source from
>> that year, "2023-initial" is the LuaTeX binary initially included with
>> TL23, and "sys" is the current TL23 LuaTeX binary (there was a mid-year
>> update this year). All the tests used an up-to-date TL23 tree, with only
>> the LuaTeX binaries modified. I've attached the full test script.
>>
>> "2023" (1.01 ± 0.05), "2023-initial" (1.08 ± 0.05), and
>> "sys" (1.42 ± 0.06) were all compiled from the same sources (mostly) and
>> with the same compilers (I think?), so I'm not sure why the current
>> binaries have such a large regression. Compiler flags maybe? I think
>> that Karl built the current TL23 binaries ("sys"), so he might know
>> more.
>>
>> Thanks,
>> -- Max
>>
>>
>
--
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
More information about the luatex
mailing list.