[tex-live] Making TeX run faster
Nelson H. F. Beebe
beebe at math.utah.edu
Thu Mar 11 16:34:28 CET 2004
I rebuilt our TeX installations here on about a dozen flavors of Unix
earlier this week, making experiments with new compilers and compiler
optimizations. In many cases, the optimized code failed the trip
and/or trap tests, but I ultimately got builds that did pass, and that
run faster than older versions. Here is a snippet from the report
that I sent to our local TeX community:
>> ...
>> ===================
>> Timing improvements
>> ===================
>>
>> The motivation for the compiler experiments is to see if TeX can be
>> made to run faster on existing platforms.
>>
>> Using the average of 10 runs of typesetting the TeXbook (494 pages, 54
>> fonts), here are the page rates and speedups on our servers over the
>> previous versions of /usr/local/bin/tex (some of which were compiled
>> several years ago with less mature compilers), sorted from slowest to
>> fastest machine.
>>
>> =================================================================================
>> TeXbook typesetting (pages/sec)
>> Server vendor TeXLive old new speedup (new:old)
>> =================================================================================
>> blab02 7.8 n/a 5.3 9.3 1.75
>> wombat 9.1 9.1 11.2 11.2 1.00
>> eilat n/a 37 30 44 1.45
>> henry n/a n/a 44 76 1.73
>> mosso n/a 66 47 77 1.64
>> suncore n/a 79 85 99 1.16
>> uinta 129 114 145 146 1.00
>> fuji n/a 219 240 249 1.04
>> ibapah 157 n/a 343 342 1.00
>> =================================================================================
>> ...
The TeXLive versions are 2003/9 for all but mosso (a DEC Alpha OSF/1
system), for which I used TeXLive 7. Compared to vendor versions, I
got speedups up to 2.18 (ibapah, an Itanium-2 system). Compared to
TeXLive, I got speedups of 1.14 to 1.28. At our site, given our heavy
use of TeX, the speedups are very helpful.
The 343 pages/sec on the 1.4GHz Itanium-2 is fast, but is not the TeX
speed record; I have recorded 410 pages/sec on an Apple PowerMac G5
(2GHz PowerPC), 412 pages/sec on an 1.3GHz Pentium M Centrino, and 425
pages/sec on a 1.4GHz AMD Athlon. The fastest Sun SPARC time so far
is 190 pages/sec on a 1.06GHz Sun Sun Blade 1500. I should shortly
have access again to AMD Opteron systems, which may beat everything.
Alas, I never recorded speeds on the DEC-20/60 (TeX's original
development machine) and the VAX 8600; I estimate that they would have
run at about 0.5 page/sec and 2 pages/sec.
I think it would be worthwhile in preparation of the next TeXLive
release to make similar timing experiments, so that we can ship the
fastest TeX possible on each platform.
We should also document the compilation environment for every
supported binary distribution, to serve as a starting point for future
rebuilds. To that end, here are the compilers and optimizations that
I used; there are more systems listed here than in the above table,
because for some, I had no previous builds to compare with.
==========================================================================================
Architecture O/S Compiler CFLAGS
==========================================================================================
Apple PowerPC (PowerMac G3) GNU/Linux (YD 2.3) gcc-3.2.2 -O3 -g
Apple PowerPC (PowerMac G4) MacOS 10.2.3 gcc-3.3.3 -O3 -g
DEC Alpha 21064 (EV4) GNU/Linux (RH 6.2) gcc-3.3 -O2 -mieee -g
DEC Alpha 21264 (EV5) OSF/1 4.0 gcc-3.3.3 -O3 -mieee -mcpu=ev5 -g
Dell PowerEdge Intel Itanium-2 GNU/Linux (RH AS2.1) icc-8.0 -O2
Intel Pentium III GNU/Linux (RH 8) gcc-3.3.3 -O4 -mcpu=i686 -march=i686 -g
Intel Pentium III FreeBSD 5.0 gcc-3.3.2 -O3 -g
Intel Pentium III NetBSD 1.6 gcc-3.3.2 -O3 -g
Intel Pentium III OpenBSD 3.2 gcc-3.3.2 -O3 -g
Intel Pentium III Solaris 9 x86 cc-5.5 -xO3 xdepend -dalign -xlibmil -xunroll=5 -xprefetch
SGI Origin/200 MIPS R10000 IRIX 6.5 gcc-3.3 -O3 -mips3 -g
Sun E5500 UltraSPARC II Solaris 8 cc-5.3 -xO3 xdepend -dalign -xlibmil -xunroll=5 -xprefetch
Sun SPARC 10 (TI SuperSPARC 50) GNU/Linux (RH 6.2) gcc-3.3 -O3 -g
==========================================================================================
gcc beat vendor compilers on OSF/1 and IRIX systems, but Sun's
compilers beat gcc on Solaris (SPARC and x86), and Intel's icc beat
gcc on Itanium-2. The BSD systems and the GNU/Linux systems on
non-Intel IA-32 hardware have only gcc available, although I used
locally-installed versions of gcc that are newer than /usr/bin/gcc.
Since TeXLive binaries have to run on a range of hardware within each
O/S, CPU-specific options like -mcpu=i686, -march=i686, -mcpu=ev5, and
-mips3 above cannot be used for TeXLive builds.
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe at math.utah.edu -
- 155 S 1400 E RM 233 beebe at acm.org beebe at computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe -
-------------------------------------------------------------------------------
More information about the tex-live
mailing list