TeX - LaTeX Asked on July 21, 2021
UPDATE 2020: The 2015 version of this post (reporting a factor 6 speed disadvantage) was outdated. This is an updated version to 2020.
I know similar questions have been asked about lua*tex speed in years past. But now it’s 2020, and according to wikipedia, lua*tex is the designated successor for pdf*tex. my hopes for lua*tex is that it becomes the one tex to rule them all. A modest speed penalty for more capabilities is expected.
My documents don’t really gain from the use of lua. They are just for finding out what the switch penalty is. Font-wise,
documentclass{article}
usepackage[T1]{fontenc}
usepackage{textcomp}
usepackage{charter}
usepackage[mdbch,ttscaled=true]{mathdesign}
usepackage{microtype}
usepackage{lipsum}
begin{document}
lipsum lipsum lipsum
lipsum lipsum lipsum
end{document}
The timing on a macbook pro 13 (2020) is
lualatex test 1.27s user 0.10s system 98% cpu 1.378 total
pdflatex test 0.68s user 0.05s system 98% cpu 0.734 total
It still seem too heavy to suggest that lua*tex will be the one-size-fits-all solution. do I misunderstand the goal of lua*tex as a universal successor to pdf*tex? is the speed disadvantage likely to diminish dramatically or will it stay this way?
PS: Per comment, the penalty seems to be mostly a fixed cost at startup. Once initialized, the two programs seem to run similarly fast. it also suggests that more aggressive startup caching could potentially speed up lualatex in order to pave the way for replacing pdflatex permanently as the least common denominator.
I believe the question "which is slower" depends on more than just the preamble. As you noted, it may make sense to postpone speed penalties until they are actually used.
This answer is just a partial answer within my scope and interest, so you may need further input regarding the "factor 6 speed penalty" for your example preamble.
In the following example, luatex is three times faster. It is the answer of @percusse posted at pgfplots: Color a 3D surf plot based on y-value (the only modification is that I added a missing round brace in the math expression):
documentclass[border=5mm]{standalone}
usepackage{pgfplots}
pgfplotsset{compat=1.12,
colormap/viridis/.style={
colormap={viridis}{
rgb=(0.26700401, 0.00487433, 0.32941519)
rgb=(0.26851048, 0.00960483, 0.33542652)
rgb=(0.26994384, 0.01462494, 0.34137895)
rgb=(0.27130489, 0.01994186, 0.34726862)
rgb=(0.27259384, 0.02556309, 0.35309303)
rgb=(0.27380934, 0.03149748, 0.35885256)
rgb=(0.27495242, 0.03775181, 0.36454323)
rgb=(0.27602238, 0.04416723, 0.37016418)
rgb=(0.2770184 , 0.05034437, 0.37571452)
rgb=(0.27794143, 0.05632444, 0.38119074)
rgb=(0.27879067, 0.06214536, 0.38659204)
rgb=(0.2795655 , 0.06783587, 0.39191723)
rgb=(0.28026658, 0.07341724, 0.39716349)
rgb=(0.28089358, 0.07890703, 0.40232944)
rgb=(0.28144581, 0.0843197 , 0.40741404)
rgb=(0.28192358, 0.08966622, 0.41241521)
rgb=(0.28232739, 0.09495545, 0.41733086)
rgb=(0.28265633, 0.10019576, 0.42216032)
rgb=(0.28291049, 0.10539345, 0.42690202)
rgb=(0.28309095, 0.11055307, 0.43155375)
rgb=(0.28319704, 0.11567966, 0.43611482)
rgb=(0.28322882, 0.12077701, 0.44058404)
rgb=(0.28318684, 0.12584799, 0.44496 )
rgb=(0.283072 , 0.13089477, 0.44924127)
rgb=(0.28288389, 0.13592005, 0.45342734)
rgb=(0.28262297, 0.14092556, 0.45751726)
rgb=(0.28229037, 0.14591233, 0.46150995)
rgb=(0.28188676, 0.15088147, 0.46540474)
rgb=(0.28141228, 0.15583425, 0.46920128)
rgb=(0.28086773, 0.16077132, 0.47289909)
rgb=(0.28025468, 0.16569272, 0.47649762)
rgb=(0.27957399, 0.17059884, 0.47999675)
rgb=(0.27882618, 0.1754902 , 0.48339654)
rgb=(0.27801236, 0.18036684, 0.48669702)
rgb=(0.27713437, 0.18522836, 0.48989831)
rgb=(0.27619376, 0.19007447, 0.49300074)
rgb=(0.27519116, 0.1949054 , 0.49600488)
rgb=(0.27412802, 0.19972086, 0.49891131)
rgb=(0.27300596, 0.20452049, 0.50172076)
rgb=(0.27182812, 0.20930306, 0.50443413)
rgb=(0.27059473, 0.21406899, 0.50705243)
rgb=(0.26930756, 0.21881782, 0.50957678)
rgb=(0.26796846, 0.22354911, 0.5120084 )
rgb=(0.26657984, 0.2282621 , 0.5143487 )
rgb=(0.2651445 , 0.23295593, 0.5165993 )
rgb=(0.2636632 , 0.23763078, 0.51876163)
rgb=(0.26213801, 0.24228619, 0.52083736)
rgb=(0.26057103, 0.2469217 , 0.52282822)
rgb=(0.25896451, 0.25153685, 0.52473609)
rgb=(0.25732244, 0.2561304 , 0.52656332)
rgb=(0.25564519, 0.26070284, 0.52831152)
rgb=(0.25393498, 0.26525384, 0.52998273)
rgb=(0.25219404, 0.26978306, 0.53157905)
rgb=(0.25042462, 0.27429024, 0.53310261)
rgb=(0.24862899, 0.27877509, 0.53455561)
rgb=(0.2468114 , 0.28323662, 0.53594093)
rgb=(0.24497208, 0.28767547, 0.53726018)
rgb=(0.24311324, 0.29209154, 0.53851561)
rgb=(0.24123708, 0.29648471, 0.53970946)
rgb=(0.23934575, 0.30085494, 0.54084398)
rgb=(0.23744138, 0.30520222, 0.5419214 )
rgb=(0.23552606, 0.30952657, 0.54294396)
rgb=(0.23360277, 0.31382773, 0.54391424)
rgb=(0.2316735 , 0.3181058 , 0.54483444)
rgb=(0.22973926, 0.32236127, 0.54570633)
rgb=(0.22780192, 0.32659432, 0.546532 )
rgb=(0.2258633 , 0.33080515, 0.54731353)
rgb=(0.22392515, 0.334994 , 0.54805291)
rgb=(0.22198915, 0.33916114, 0.54875211)
rgb=(0.22005691, 0.34330688, 0.54941304)
rgb=(0.21812995, 0.34743154, 0.55003755)
rgb=(0.21620971, 0.35153548, 0.55062743)
rgb=(0.21429757, 0.35561907, 0.5511844 )
rgb=(0.21239477, 0.35968273, 0.55171011)
rgb=(0.2105031 , 0.36372671, 0.55220646)
rgb=(0.20862342, 0.36775151, 0.55267486)
rgb=(0.20675628, 0.37175775, 0.55311653)
rgb=(0.20490257, 0.37574589, 0.55353282)
rgb=(0.20306309, 0.37971644, 0.55392505)
rgb=(0.20123854, 0.38366989, 0.55429441)
rgb=(0.1994295 , 0.38760678, 0.55464205)
rgb=(0.1976365 , 0.39152762, 0.55496905)
rgb=(0.19585993, 0.39543297, 0.55527637)
rgb=(0.19410009, 0.39932336, 0.55556494)
rgb=(0.19235719, 0.40319934, 0.55583559)
rgb=(0.19063135, 0.40706148, 0.55608907)
rgb=(0.18892259, 0.41091033, 0.55632606)
rgb=(0.18723083, 0.41474645, 0.55654717)
rgb=(0.18555593, 0.4185704 , 0.55675292)
rgb=(0.18389763, 0.42238275, 0.55694377)
rgb=(0.18225561, 0.42618405, 0.5571201 )
rgb=(0.18062949, 0.42997486, 0.55728221)
rgb=(0.17901879, 0.43375572, 0.55743035)
rgb=(0.17742298, 0.4375272 , 0.55756466)
rgb=(0.17584148, 0.44128981, 0.55768526)
rgb=(0.17427363, 0.4450441 , 0.55779216)
rgb=(0.17271876, 0.4487906 , 0.55788532)
rgb=(0.17117615, 0.4525298 , 0.55796464)
rgb=(0.16964573, 0.45626209, 0.55803034)
rgb=(0.16812641, 0.45998802, 0.55808199)
rgb=(0.1666171 , 0.46370813, 0.55811913)
rgb=(0.16511703, 0.4674229 , 0.55814141)
rgb=(0.16362543, 0.47113278, 0.55814842)
rgb=(0.16214155, 0.47483821, 0.55813967)
rgb=(0.16066467, 0.47853961, 0.55811466)
rgb=(0.15919413, 0.4822374 , 0.5580728 )
rgb=(0.15772933, 0.48593197, 0.55801347)
rgb=(0.15626973, 0.4896237 , 0.557936 )
rgb=(0.15481488, 0.49331293, 0.55783967)
rgb=(0.15336445, 0.49700003, 0.55772371)
rgb=(0.1519182 , 0.50068529, 0.55758733)
rgb=(0.15047605, 0.50436904, 0.55742968)
rgb=(0.14903918, 0.50805136, 0.5572505 )
rgb=(0.14760731, 0.51173263, 0.55704861)
rgb=(0.14618026, 0.51541316, 0.55682271)
rgb=(0.14475863, 0.51909319, 0.55657181)
rgb=(0.14334327, 0.52277292, 0.55629491)
rgb=(0.14193527, 0.52645254, 0.55599097)
rgb=(0.14053599, 0.53013219, 0.55565893)
rgb=(0.13914708, 0.53381201, 0.55529773)
rgb=(0.13777048, 0.53749213, 0.55490625)
rgb=(0.1364085 , 0.54117264, 0.55448339)
rgb=(0.13506561, 0.54485335, 0.55402906)
rgb=(0.13374299, 0.54853458, 0.55354108)
rgb=(0.13244401, 0.55221637, 0.55301828)
rgb=(0.13117249, 0.55589872, 0.55245948)
rgb=(0.1299327 , 0.55958162, 0.55186354)
rgb=(0.12872938, 0.56326503, 0.55122927)
rgb=(0.12756771, 0.56694891, 0.55055551)
rgb=(0.12645338, 0.57063316, 0.5498411 )
rgb=(0.12539383, 0.57431754, 0.54908564)
rgb=(0.12439474, 0.57800205, 0.5482874 )
rgb=(0.12346281, 0.58168661, 0.54744498)
rgb=(0.12260562, 0.58537105, 0.54655722)
rgb=(0.12183122, 0.58905521, 0.54562298)
rgb=(0.12114807, 0.59273889, 0.54464114)
rgb=(0.12056501, 0.59642187, 0.54361058)
rgb=(0.12009154, 0.60010387, 0.54253043)
rgb=(0.11973756, 0.60378459, 0.54139999)
rgb=(0.11951163, 0.60746388, 0.54021751)
rgb=(0.11942341, 0.61114146, 0.53898192)
rgb=(0.11948255, 0.61481702, 0.53769219)
rgb=(0.11969858, 0.61849025, 0.53634733)
rgb=(0.12008079, 0.62216081, 0.53494633)
rgb=(0.12063824, 0.62582833, 0.53348834)
rgb=(0.12137972, 0.62949242, 0.53197275)
rgb=(0.12231244, 0.63315277, 0.53039808)
rgb=(0.12344358, 0.63680899, 0.52876343)
rgb=(0.12477953, 0.64046069, 0.52706792)
rgb=(0.12632581, 0.64410744, 0.52531069)
rgb=(0.12808703, 0.64774881, 0.52349092)
rgb=(0.13006688, 0.65138436, 0.52160791)
rgb=(0.13226797, 0.65501363, 0.51966086)
rgb=(0.13469183, 0.65863619, 0.5176488 )
rgb=(0.13733921, 0.66225157, 0.51557101)
rgb=(0.14020991, 0.66585927, 0.5134268 )
rgb=(0.14330291, 0.66945881, 0.51121549)
rgb=(0.1466164 , 0.67304968, 0.50893644)
rgb=(0.15014782, 0.67663139, 0.5065889 )
rgb=(0.15389405, 0.68020343, 0.50417217)
rgb=(0.15785146, 0.68376525, 0.50168574)
rgb=(0.16201598, 0.68731632, 0.49912906)
rgb=(0.1663832 , 0.69085611, 0.49650163)
rgb=(0.1709484 , 0.69438405, 0.49380294)
rgb=(0.17570671, 0.6978996 , 0.49103252)
rgb=(0.18065314, 0.70140222, 0.48818938)
rgb=(0.18578266, 0.70489133, 0.48527326)
rgb=(0.19109018, 0.70836635, 0.48228395)
rgb=(0.19657063, 0.71182668, 0.47922108)
rgb=(0.20221902, 0.71527175, 0.47608431)
rgb=(0.20803045, 0.71870095, 0.4728733 )
rgb=(0.21400015, 0.72211371, 0.46958774)
rgb=(0.22012381, 0.72550945, 0.46622638)
rgb=(0.2263969 , 0.72888753, 0.46278934)
rgb=(0.23281498, 0.73224735, 0.45927675)
rgb=(0.2393739 , 0.73558828, 0.45568838)
rgb=(0.24606968, 0.73890972, 0.45202405)
rgb=(0.25289851, 0.74221104, 0.44828355)
rgb=(0.25985676, 0.74549162, 0.44446673)
rgb=(0.26694127, 0.74875084, 0.44057284)
rgb=(0.27414922, 0.75198807, 0.4366009 )
rgb=(0.28147681, 0.75520266, 0.43255207)
rgb=(0.28892102, 0.75839399, 0.42842626)
rgb=(0.29647899, 0.76156142, 0.42422341)
rgb=(0.30414796, 0.76470433, 0.41994346)
rgb=(0.31192534, 0.76782207, 0.41558638)
rgb=(0.3198086 , 0.77091403, 0.41115215)
rgb=(0.3277958 , 0.77397953, 0.40664011)
rgb=(0.33588539, 0.7770179 , 0.40204917)
rgb=(0.34407411, 0.78002855, 0.39738103)
rgb=(0.35235985, 0.78301086, 0.39263579)
rgb=(0.36074053, 0.78596419, 0.38781353)
rgb=(0.3692142 , 0.78888793, 0.38291438)
rgb=(0.37777892, 0.79178146, 0.3779385 )
rgb=(0.38643282, 0.79464415, 0.37288606)
rgb=(0.39517408, 0.79747541, 0.36775726)
rgb=(0.40400101, 0.80027461, 0.36255223)
rgb=(0.4129135 , 0.80304099, 0.35726893)
rgb=(0.42190813, 0.80577412, 0.35191009)
rgb=(0.43098317, 0.80847343, 0.34647607)
rgb=(0.44013691, 0.81113836, 0.3409673 )
rgb=(0.44936763, 0.81376835, 0.33538426)
rgb=(0.45867362, 0.81636288, 0.32972749)
rgb=(0.46805314, 0.81892143, 0.32399761)
rgb=(0.47750446, 0.82144351, 0.31819529)
rgb=(0.4870258 , 0.82392862, 0.31232133)
rgb=(0.49661536, 0.82637633, 0.30637661)
rgb=(0.5062713 , 0.82878621, 0.30036211)
rgb=(0.51599182, 0.83115784, 0.29427888)
rgb=(0.52577622, 0.83349064, 0.2881265 )
rgb=(0.5356211 , 0.83578452, 0.28190832)
rgb=(0.5455244 , 0.83803918, 0.27562602)
rgb=(0.55548397, 0.84025437, 0.26928147)
rgb=(0.5654976 , 0.8424299 , 0.26287683)
rgb=(0.57556297, 0.84456561, 0.25641457)
rgb=(0.58567772, 0.84666139, 0.24989748)
rgb=(0.59583934, 0.84871722, 0.24332878)
rgb=(0.60604528, 0.8507331 , 0.23671214)
rgb=(0.61629283, 0.85270912, 0.23005179)
rgb=(0.62657923, 0.85464543, 0.22335258)
rgb=(0.63690157, 0.85654226, 0.21662012)
rgb=(0.64725685, 0.85839991, 0.20986086)
rgb=(0.65764197, 0.86021878, 0.20308229)
rgb=(0.66805369, 0.86199932, 0.19629307)
rgb=(0.67848868, 0.86374211, 0.18950326)
rgb=(0.68894351, 0.86544779, 0.18272455)
rgb=(0.69941463, 0.86711711, 0.17597055)
rgb=(0.70989842, 0.86875092, 0.16925712)
rgb=(0.72039115, 0.87035015, 0.16260273)
rgb=(0.73088902, 0.87191584, 0.15602894)
rgb=(0.74138803, 0.87344918, 0.14956101)
rgb=(0.75188414, 0.87495143, 0.14322828)
rgb=(0.76237342, 0.87642392, 0.13706449)
rgb=(0.77285183, 0.87786808, 0.13110864)
rgb=(0.78331535, 0.87928545, 0.12540538)
rgb=(0.79375994, 0.88067763, 0.12000532)
rgb=(0.80418159, 0.88204632, 0.11496505)
rgb=(0.81457634, 0.88339329, 0.11034678)
rgb=(0.82494028, 0.88472036, 0.10621724)
rgb=(0.83526959, 0.88602943, 0.1026459 )
rgb=(0.84556056, 0.88732243, 0.09970219)
rgb=(0.8558096 , 0.88860134, 0.09745186)
rgb=(0.86601325, 0.88986815, 0.09595277)
rgb=(0.87616824, 0.89112487, 0.09525046)
rgb=(0.88627146, 0.89237353, 0.09537439)
rgb=(0.89632002, 0.89361614, 0.09633538)
rgb=(0.90631121, 0.89485467, 0.09812496)
rgb=(0.91624212, 0.89609127, 0.1007168 )
rgb=(0.92610579, 0.89732977, 0.10407067)
rgb=(0.93590444, 0.8985704 , 0.10813094)
rgb=(0.94563626, 0.899815 , 0.11283773)
rgb=(0.95529972, 0.90106534, 0.11812832)
rgb=(0.96489353, 0.90232311, 0.12394051)
rgb=(0.97441665, 0.90358991, 0.13021494)
rgb=(0.98386829, 0.90486726, 0.13689671)
rgb=(0.99324789, 0.90615657, 0.1439362 )
}
}
}
begin{document}
begin{tikzpicture}
begin{axis}[domain=0:pi,samples=81,samples y=81,colormap/viridis,view={20}{55},hide axis]
addplot3 [surf, point meta=y] {exp(-0.5*x*y)*4*cos(deg(5*x)) * sin(deg(12*y)) + 10*cos(deg(0.5*x*y))};
end{axis}
end{tikzpicture}
end{document}
The outcome is the same for both pdftex and luatex, but (on my ancient system), pdftex requires 65 seconds to compile the picture whereas luatex requires 21 seconds (a factor of 3).
More optimizations of that sort are likely to follow. If some parts of the PGF backend engine where ported to luatex
, the example's runtime would be considerably faster - the remaining part of the luatex runtime is due to plain old TeX code which takes its time.
So, my partial answer is "If you make use of pgfplots
, lualatex
can provide much more speed in texlive 2015".
Some details for those who want to benefit from the improvements: the example benefits from lua because compat=1.12
(or newer) enables a special lua backend
; a partial reimplementation of many expensive sub-operations in lua
.
The lua backend
is a partial implementation. If it is unavailable for some input option, the file's .log
file will always indicate that it fell back to the TeX implementation (and why).
Something else occurs to me: there are packages which are plain unavailable for pdftex: I am thinking of the excellent graph drawing library of PGF. This is not quite related to the question (which is more about speed), but still: luatex has left its "message" when it comes to advantages for end users.
Answered by Christian Feuersänger on July 21, 2021
In my case, the speed difference was entirely attributable to the microtype package.
documentclass{article}
usepackage{lipsum}
usepackage{charter}
usepackage{microtype}
begin{document}
lipsum
end{document}
shows a factor 3 speed difference. some other features of my document (probably tabulars) managed to worsen this by a further factor 2 for a total slowdown of factor 6.
thanks, daleif.
Answered by ivo Welch on July 21, 2021
For comparison, in ConTeXt the penalty is similar.
starttext
dorecurse{50}{input knuth par}
stoptext
Macbook Pro with ConTeXt standalone.
time context --noconsole --runs=1 test.tex 0.96s user 0.08s system 97% cpu 1.069 total
context --jit --noconsole --runs=1 test.tex 1.09s user 0.10s system 93% cpu 1.281 total
time texexec --noconsole --runs=1 test 0.40s user 0.13s system 83% cpu 0.640 total
If I change the number of copies to 5000, i.e.,
starttext
dorecurse{5000}{input knuth par}
stoptext
gives 1250 pages and the timings are:
pdftex: 5.30s user 0.19s system 99% cpu 5.530 total luatex: 26.75s user 0.60s system 99% cpu 27.518 total luatexjit: 17.95s user 0.35s system 99% cpu 18.370 total
Note that this is not an apples to apples comparison because ConTeXt MkII (pdftex) uses Type 1 Latin Modern as default font and ConTeXt MkIV (luatex) uses OpenType Latin Modern.
pdftex
: 4.5ms/pageluatex
: 20ms/page (a factor of 5 slowdown)luatexjit
: 14.5 ms/page (a factor of 3 slowdown)Note that, for small files, the startup time dominates the runtime.
Answered by Aditya on July 21, 2021
The LaTeX file generated by this program runs in 4.3 seconds in pdflatex and 13.1 seconds in lualatex.
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main()
{
FILE *fl=fopen("try.tex","w");
long x,y;
fprintf(fl,"documentclass{amsart}nusepackage{mathpazo}nusepackage{bm}nusepackage{lipsum}nnewcommand{bld}[1]{boldsymbol{#1}}nbegin{document}n");
for(x=0; x<10000; x++)
{
fprintf(fl,"lipsum[%ld]n",x % 150);
fprintf(fl,"begin{gather}n");
fprintf(fl,"bld y = ");
fprintf(fl,"sqrt{log z}n");
fprintf(fl,"end{gather}n");
}
fprintf(fl,"end{document}n");
fclose(fl);
}
which produces
documentclass{article}
usepackage{lipsum}
newcommand{bld}[1]{#1}
begin{document}
lipsum[0]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[1]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[2]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[3]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[4]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[5]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[6]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[7]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[8]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[9]
begin{equation}
bld y = sqrt{log z}
end{equation}
lipsum[10]
begin{equation}
bld y = sqrt{log z}
end{equation}
%(many repetitions)
end{document}
Answered by JPi on July 21, 2021
I just ran my textbook (700 pages, think everything under the sun; memoir class) on both pdflatex (3.14159265-2.6-1.40.17 TL 2016) and lualatex (0.95.0; TL 2016). To lualatex's (huge) credit, the speed difference is much smaller now:
pdflatex, TL2016: 11 seconds
lualatex, TL2016: 16 seconds
TL2017 improves both times by about 0.5 seconds:
pdflatex = 3.14159265-2.6-1.40.18
lualatex = 1.0.4
this difference seems quite acceptable. not yet where we should discontinue pdflatex, but well on the way to a universal replacement for pdflatex. thanks everybody.
regards, /iaw
Answered by ivo Welch on July 21, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP