23

I know similar questions have been asked about lua*tex speed in years past. But now it's 2015, 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.

So I just decided to try it out on some of my own plain documents, based on texlive 2015 under OSX. lua sits at version beta-0.80.0, pdf sits at version 1.40.16. My documents don't really gain from the use of lua. They are just for finding out what the switch penalty is. Font-wise,

\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{charter}
\usepackage[mdbch,ttscaled=true]{mathdesign}
\usepackage{microtype}

My first sample document is 20 pages and tabular heavy.

  • It takes about 1.3 seconds on pdflatex.
  • It takes about 8 seconds on lualatex.

a factor 6 speed penalty seems 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: maybe it is possible to delay the worst speed penalties for more features until the extra features are actually used? I think lua*tex takes a lot of time loading the mathdesign fd fonts that pdf*tex does not.

  • 6
    Remove microtype. It is really slow on lualatex for some reason. You can add it again at the final stages of compiling you doc – daleif Aug 15 '15 at 6:52
  • 3
    For the sake of making comparisons, it may be useful to use the fontspec approach to loading text and math fonts when compiling under LuaLaTeX. – Mico Aug 15 '15 at 7:59
  • 1
    On a 255 page, fairly complex, document: pdflatex 11.6 real (of which 6.2 user), 31.5 lualatex with microtype, 22.2 lualatex without microtype (next to no difference between real and user). – JPi Aug 15 '15 at 14:29
  • 1
    I looked at ulrike's nice comment, but it did not apply in my situation. however, deleif was right on the money---my own document slowdown was all due to microtype. removing it makes lualatex roughly equally fast. alas, I thought that microtype (introduced for pdftex) was highly recommended for nicer-looking documents and in very wide use. is speeding up microtype on luatex's fix list? (I wonder where JPi is bitten on still seeing a factor 2 slowdown after after removing microtype.) – ivo Welch Aug 15 '15 at 15:27
  • 9
    microtype is indeed slower with luatex than with pdftex. This is mostly because of certain operations that have to be applied to all glyphs in the font (and Opentype fonts can be huge!), These loops are carried out in tex while it would be much faster using luatex techniques. This will be fixed in the next version of microtype (due October), which should at least resolve the microtype bottleneck. – Robert Aug 16 '15 at 3:31
15

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.

  • 2
    I can confirm the dramatic difference in compilation speeds for my system and TeX distribution (early-2014 MacBookPro, 2.8GHz core i7, 8GByte RAM; MacOSX 10.10.4 "Yosemite", MacTeX2015): 28-29 seconds under pdfLaTeX, 8-9 seconds under LuaLaTeX. The factor-3 difference persists on this faster machine... – Mico Aug 15 '15 at 7:38
  • 1
    This may be a nice advantage, but remember that plots are compiled only a few times to then be included in the main document as a seperate graphic file. For the actual workflow, LuaTeX still seems rather inhibiting. – 1010011010 Aug 15 '15 at 8:42
  • 2
    Agreed. However, even if plots turn out to be "special", it still makes sense to choose luatex for such applications. – Christian Feuersänger Aug 15 '15 at 12:28
11

For comparison, in ConTeXt the penalty is similar.

Test file (13 pages)

\starttext
\dorecurse{50}{\input knuth \par}
\stoptext

System details

Macbook Pro with ConTeXt standalone.

LuaTeX

time context --noconsole --runs=1 test.tex
0.96s user 0.08s system 97% cpu 1.069 total

LuaTeXJIT

context --jit --noconsole --runs=1 test.tex
1.09s user 0.10s system 93% cpu 1.281 total

Pdftex

time texexec --noconsole --runs=1 test
0.40s user 0.13s system 83% cpu 0.640 total

Stress testing

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.

Summary of processing time

  • pdftex: 4.5ms/page
  • luatex: 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.

6

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.

  • 1
    microtype package hacks into the paragraph building mechanism both in PDFTeX and LuaTeX. I cannot see yet any easy way to bound it in terms of big-O notation, however, we can imagine that the more micro typographical properties it is validating the slower the compilation would get. So that is simply due to the increased complexity. From microtype manual Use settings that match your font. There is more to microtypography than just including the package. You can maybe test with turning of the tracking and so on – percusse Aug 16 '15 at 0:10
  • in this simple test case, I think both lua*tex and pdf*tex are using the same exact font without tuning and presumably are outputting the same thing (?!). it is simply that lua takes three times as long to create the same output. – ivo Welch Aug 16 '15 at 5:19
  • 1
    @percusse: microtype together with lualatex. maps over all unicode values for some setups and so does loops of the length of 1114111. The documentation says "there ought to be a better way!". Try out \makeatletter \def\MT@max@slot {1000 }\makeatother directly after loading microtype and you will see that it is much faster. – Ulrike Fischer Sep 2 '15 at 14:16
  • @UlrikeFischer: Could you please explain a bit more what happens if that value gets changed? Why is the standard value 1114111? I would consider using your code in my document but I also would like to understand a bit more of it. I tried it with the following results: microtype (std) : 1m29s - 327pages --- microtype (MT@max@slot - 1000) : 1m7s - 327pages --- no microtype : 1m5s - 328pages – aronadaal May 13 '16 at 8:15
  • 1
    @aronadaal: 1114111 is (imho) the maximum number of unicode slots. microtype simply loops over everything. If you want to change this you should use a value that includes "your" glyphs, my choice of 1000 was arbitrary for the test. There has been a microtype update some days ago and I did not check if it changed something in this page of the code. – Ulrike Fischer May 13 '16 at 8:22
2

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}\n\\usepackage{mathpazo}\n\\usepackage{bm}\n\\usepackage{lipsum}\n\\newcommand{\\bld}[1]{\\boldsymbol{#1}}\n\\begin{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}
  • 1
    The differences persist if all the font stuff and math is removed and the article class is changed to article. Hmmm. – JPi Aug 16 '15 at 2:19
  • Would you mind (re)posting the code as LaTeX-direct, for the benefit of those who don't have a C compiler installed on their system? – Mico Aug 17 '15 at 20:00
  • It's hundreds of pages...... – JPi Aug 17 '15 at 20:03
  • Never mind, then. – Mico Aug 17 '15 at 20:05
  • just added a shortened version – JPi Aug 17 '15 at 20:08
1

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.