免责声明:这篇文章有点长...如果你不关心 TeX Live 生态系统行为和 LaTeX 编译时间,请忽略它!:)
我有一个“复杂”的项目(论文模板) 使用 BibLaTeX 来编写参考书目。我尝试编译分支 7.0.0(点击此处压缩) 使用以下命令行
latexmk -time -shell-escape -synctex=1 -output-format=pdf -file-line-error -silent -pdf template
和四个不同版本的 TeX Live (2020 至 2022) 来管理项目的运行情况。
所有时间以秒为单位,是使用 2018 年初的 MacBook Pro 中的 macOS Ventura 获得的。所有时间都是 4 次执行中的 3 次的平均值(始终忽略每个版本的第一次执行以受益于磁盘缓存)。标准偏差很低。
我的观察是:
- 的编译时间
biber
一直在增加(自 TL 2020 以来增加了 32%)。参见第 (2) 行。 pdflatex
从 TL 2020 到 TL 2021/2,编译时间增加了 25% 以上。请参阅第 (1) 行。- 在 TL2022 中,第二次及后续执行的编译时间
pdflatex
显著增加 (>40%)。请参阅 TL 2020 列,第 (1) 行与第 (3)、(5) 行和第 (6) 行。 latexmk
在不同版本中表现不同。- 如果没有文件,它会跳过TL 2021-dev 中
latexmkrc
的一次执行,并在 TL 2022 中运行两次。pdflatex
biber
- 使用一个
latexmkrc
文件(见下面的文件副本)来解决词汇表中的依赖关系,它会跳过pdflatex
TL 2021-dev 和 TL 2022 中的一次执行。
- 如果没有文件,它会跳过TL 2021-dev 中
关于以下内容的任何提示:
- 为什么
latexmk
TL 的不同版本表现如此不同?最后一次执行pdflatex
是必要的吗? - 为何
biber
越来越慢了? - 为什么
pdflatex
TL 2020 中的第 2 次及后续运行速度较慢?
运行时间没有 latexmkrc
2020 | 2021 | 2021-dev | 2022 | ||
---|---|---|---|---|---|
pdflatex | 4.11 | 5.89 | 5.19 | 5.10 | (1) |
比伯 | 1.59 | 1.84 | 1.72 | 2.10 | (2) |
pdflatex | 4.29 | 6.38 | 5.62 | 7.21 | (3) |
比伯 | ---- | ---- | ---- | 2.09 | (4) |
pdflatex | 4.30 | 6.47 | 5.80 | 7.23 | (5) |
pdflatex | 4.37 | 6.37 | ---- | 7.25 | (6) |
加速时间 | (*)19.80 | (*)28.39 | (*)19.43 | 33.78 |
(*)如果没有latexmkrc
(----)latexmk
未运行此命令(或未报告其时间)
运行时间和 latexmkrc
2020 | 2021 | 2021-dev | 2022 | |
---|---|---|---|---|
pdflatex | 4.03 | 5.72 | 5.02 | 5.39 |
制作词汇表 | ---- | ---- | 1.59 | 1.69 |
比伯 | 1.53 | 1.68 | 1.66 | 2.08 |
pdflatex | 4.35 | 6.24 | 5.62 | 7.22 |
比伯 | 1.61 | 1.69 | 1.72 | 2.07 |
制作词汇表 | ---- | ---- | 1.52 | 1.56 |
pdflatex | 4.34 | 6.32 | 5.63 | 7.25 |
pdflatex | 4.35 | 6.29 | ---- | ---- |
—————— | —————— | —————— | —————— | ————————— |
加速时间 | 24.53 | 32.90 | 23.86 | 29.46 |
软件版本
TeXLive | 版本。 |
---|---|
2020 | Latexmk,John Collins,2019 年 12 月 26 日。版本 4.67 |
这是 pdfTeX,版本 3.14159265-2.6-1.40.21(TeX Live 2020)(预加载格式=pdflatex) | |
biber 版本:2.14 | |
Makeglossaries 版本 4.45(2020-01-18) | |
————— | ——————————————————————————————————————————————————————— |
2021 | Latexmk,John Collins,2020 年 9 月 29 日。版本 4.70b |
这是 pdfTeX,版本 3.141592653-2.6-1.40.22(TeX Live 2021)(预加载格式=pdflatex) | |
biber 版本:2.16 | |
Makeglossaries 版本 4.45(2020-01-18) | |
————— | ——————————————————————————————————————————————————————— |
2021-dev | Latexmk,John Collins,2022 年 3 月 17 日。版本 4.77 |
这是 pdfTeX,版本 3.141592653-2.6-1.40.23(TeX Live 2022/dev)(预加载格式=pdflatex) | |
biber 版本:2.17 | |
Makeglossaries 版本 4.49 (2021-11-01) | |
————— | ——————————————————————————————————————————————————————— |
2022 | Latexmk,John Collins,2023 年 1 月 7 日。版本 4.79 |
这是 pdfTeX,版本 3.141592653-2.6-1.40.24(TeX Live 2022)(预加载格式=pdflatex) | |
biber 版本:2.18 | |
Makeglossaries 版本 4.51 (2022-11-02) |
文件latexmkrc
if ( ! $silent ) {
if ($^O =~ /darwin/) {
print "DIAGNOSTICS = Operating System Detected: Mac OSX\n";
$filesep = '/'
} elsif ($^O =~ /linux/) {
print "DIAGNOSTICS = Operating System: Linux\n";
$filesep = '/'
} else {
print "DIAGNOSTICS = Operating System: Windows\n";
$filesep = '\\'
}
}
add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
add_cus_dep('acn', 'acr', 0, 'makeglo2gls');
add_cus_dep('slo', 'sls', 0, 'makeglo2gls');
add_cus_dep('cho', 'chs', 0, 'makeglo2gls');
sub makeglo2gls {
my ($base_name, $dir) = fileparse( $_[0] ); #handle -outdir param by splitting path and file, ...
if ($^O =~ /darwin/) {
system "makeglossaries -q -d '$dir' '$base_name'"; #macos
} elsif ($^O =~ /linux/) {
system "makeglossaries -q -d '$dir' '$base_name'"; #unix
} else {
system "makeglossaries", "-q", "-d", "$dir", "$base_name"; #windows
};
}
push @generated_exts, 'glo', 'gls', 'glg';
push @generated_exts, 'acn', 'acr', 'alg';
push @generated_exts, 'slo', 'sls', 'slg';
push @generated_exts, 'cho', 'chs', 'chg';
$clean_ext .= ' %R.ist %R.xdy';