[Tex/LaTex] lua(la)tex vs pdf(la)tex speed in texlive 2019

luatexpdftexperformance

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.

Best Answer

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}

enter image description here

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.

Related Question