[luatex] Identifying why LuaTeX 2023 is slower than LuaTeX 2022
Max Chernoff
mseven at telus.net
Wed Aug 30 12:06:11 CEST 2023
Hi Hans,
On Wed, 2023-08-30 at 10:26 +0200, Hans Hagen wrote:
> so the tl 2023 bin is slower but when you compile fresh the performenac
> is the same? if so ... then why waste time on it if generating a new bin
> solves the problem?
TL doesn't like updating binaries mid-year without a good reason, but
this is a pretty significant drop in performance. This issue only
affects a single architecture/OS, so an update shouldn't be too hard.
Hopefully this thread will persuade Karl/Norbert :)
> Factorial does little (not spread all over token space). Some mem access
> for registers, a little amount of macro tokens that likely sit in the
> cpu cache. Plus making a macro that gets larger body every iteration (so
> that is actually the bottleneck as it involved copying tokens). As you
> start ini tokens are not scattered that much.
Rebuilding the LaTeX format is a much broader test (loading expl3 does
lots of stuff) and the results there matched up pretty well with the
factorial test.
> So, do you see the same 50 % drop with the current luatex when you
> compile without O3 ?
Ok, good question.
"factorial.tex" is the ini-mode factorial test file from earlier in the
thread. "O0" is a freshly-built LuaTeX v1.17.0 built with the LuaTeX
build.sh and "CFLAGS=-O0", "O3" is the same with "CFLAGS=-O3", "tl23-
orig" is the LuaTeX v1.16.0 distributed with the initial release of
TL23, and "tl23-current" is the LuaTeX v1.17.0 in TL23 right now.
Results:
$ hyperfine --warmup 2 \
-L ver O0,O3,tl23-orig,tl23-current \
'PATH=/tmp/texlive-testing/{ver}/bin/x86_64-linux:/bin/ luatex -ini factorial.tex'
Benchmark 1: PATH=/tmp/texlive-testing/O0/bin/x86_64-linux:/bin/ luatex -ini factorial.tex
Time (mean ± σ): 5.257 s ± 0.056 s [User: 5.232 s, System: 0.024 s]
Range (min … max): 5.202 s … 5.332 s 10 runs
Benchmark 2: PATH=/tmp/texlive-testing/O3/bin/x86_64-linux:/bin/ luatex -ini factorial.tex
Time (mean ± σ): 3.713 s ± 0.047 s [User: 3.690 s, System: 0.023 s]
Range (min … max): 3.646 s … 3.770 s 10 runs
Benchmark 3: PATH=/tmp/texlive-testing/tl23-orig/bin/x86_64-linux:/bin/ luatex -ini factorial.tex
Time (mean ± σ): 3.941 s ± 0.044 s [User: 3.919 s, System: 0.022 s]
Range (min … max): 3.853 s … 3.973 s 10 runs
Benchmark 4: PATH=/tmp/texlive-testing/tl23-current/bin/x86_64-linux:/bin/ luatex -ini factorial.tex
Time (mean ± σ): 5.447 s ± 0.056 s [User: 5.420 s, System: 0.026 s]
Range (min … max): 5.386 s … 5.516 s 10 runs
Summary
PATH=/tmp/texlive-testing/O3/bin/x86_64-linux:/bin/ luatex -ini factorial.tex ran
1.06 ± 0.02 times faster than PATH=/tmp/texlive-testing/tl23-orig/bin/x86_64-linux:/bin/ luatex -ini factorial.tex
1.42 ± 0.02 times faster than PATH=/tmp/texlive-testing/O0/bin/x86_64-linux:/bin/ luatex -ini factorial.tex
1.47 ± 0.02 times faster than PATH=/tmp/texlive-testing/tl23-current/bin/x86_64-linux:/bin/ luatex -ini factorial.tex
So yeah, it looks like the original TL23 binary was -O3, but the current
one is now -O0.
Karl, could you please rebuild the TL LuaTeX binaries with -O3 for
x86_64-linux? I think that that should solve this problem.
Thanks,
-- Max
More information about the luatex
mailing list.