summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/manuals/luametatex/luametatex.tex
blob: a868466280f635d044d8cdd8c54f9d50a5f9e1dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
% language=us runpath=texruns:manuals/luametatex

% \enabledirectives[backend.pdf.inmemory]

% \setupalign[profile]
% \enabletrackers[profiling.lines.show]

% ------------------------   ------ ------------------   ------------------------
% 2019-12-17  32bit  64bit   2020-01-10  32bit  64bit   2020-11-30  32bit  64bit
% ------------------------   ------------------------   ------------------------
% freebsd     2270k  2662k   freebsd     2186k  2558k   freebsd     2108k  2436k
% openbsd6.6  2569k  2824k   openbsd6.6  2472k  2722k   openbsd6.8  2411k  2782k
% linux-armhf 2134k          linux-armhf 2063k          linux-armhf 2138k  2860k
% linux       2927k  2728k   linux       2804k  2613k   linux   (?) 3314k  2762k
%                                                       linux-musl  2532k  2686k
% osx                2821k   osx                2732k   osx                2711k
% ms mingw    2562k  2555k   ms mingw    2481k  2471k   ms mingw    2754k  2760k
%                                                       ms intel           2448k
%                                                       ms arm             3894k
%                                                       ms clang           2159k
% ------------------------   ------------------------   ------------------------
%
% performance of mingw and native are getting close (small win for mingw) but
% clang bins are still slower .. quite inconsistent differences between 32 and
% 64 bit (not all compilers are the same version)

% \enableautoglyphscaling % saves only a few instances ... no gain .. a few pages more

% \enabletexdirective{vspacing.experimental}

% \nopdfcompression

% 20200509 : 258 pages
%
% my 2013 i7 laptop with windows : 11.8 sec mingw64
% raspberry pi 64 bit with ssd   : 39.5 sec gcc 9.2
% idem with native bin           : 38.5 sec
% idem overclocked f=2000/v=6    : 31.5 sec
%
% 20200526 : 258 pages
% mingw all in: 10.9 / rpi 32 bit: 33.1

% 20200610 : 258 pages
% mingw all in: 10.6

% 20201204 : 260 pages
% mingw all in: 10.0

% 20201204 : 262 pages
% mingw all in: 9.9

% 20200720      : 258 pages / all in
%
% mingw         : 10.6 (sometimes less)
% rpi 32        : 32.3
% rpi 64        : 26.0 (overclocked)
% amd 10 fitlet : 28.2

% 20210812      : 298 pages
% mingw         :  9.7

% 20210903      : 300 pages
% mingw         :  9.6

% 20210916      : 300 pages
% mingw         :  9.4 (9.25 with LTO, 9.75 native)

% But speed can differ a bit per compilation (upto .5 seconds maybe due to how
% compiled code is organized which might influence caching. Who knows ... (or
% cares). For instance at 20200407 I measured 10.9 seconds after some new low level
% metapost magic was added but who knows if that was the reason, because mp
% processing is already fast. A week later, at 20200415, a by then 254 page file
% took 10.5 seconds, that is, we were at exactly 24 pages per second but after
% switching to gcc9 it dropped again. In december 2020, with IPO enabled I crossed
% the 26 pps barrier and went below 10 seconds but that was also after some further
% cleanup in \LMTX. Mid August 2021 I measured over 30 pps but not all is due to
% the engine I guess. End august we were are over 31 pps so it's not getting worse.

% (This means that on a modern desktop we probably can get around 100 pps on a
% manual like this but, always using laptops, I don't have access to machines like
% that. A modern laptop probably could perform over 50 pps.)

% msvc           1899k (2% slower than mingw)
% msvc /GL       2297k (similar to mingw)
% msvc /GL /Ob3  2847k (not faster than /GL)
% msvc /Ob3      2052k (slower than /Ob2)
% msvc /Ob1      1763k (slower than /Ob2)
% clang          2460k (15% slower than mingw)

% Thanks to sebastian.miele@gmail.com for close reading the manual and sending
% fixes.

% \listcallbackmode0

% 290 pages, 10.8 sec, 292M lua, 99M tex, 158 instances
% 290 pages,  9.5 sec, 149M lua, 35M tex,  30 instances

% On the 2018 Dell 7520 Precission Xeon laptop runtime for 322 pages is now exactly
% 8 seconds (just below 40 pages per second), we talking July 16, 2022.
%
% At the first of August 2022 the (slightly reorganized and updated) manual counted
% 350 pages and took 8.6 seconds to process (some 41 pages per second), so we're
% rather stable. End of 2022 processing that amount of pages dropped somewhat
% (occasionally under 8.3 seconds for 356 pages with little other system load). In
% means that 43 pages per seconds is now the new normal but that might of course
% become less again as we evolve.

% End Feburari 2023 I observed 8.2 seconds for 360 pages and making a format needed
% 1.9 seconds instead if the usual 2.1 but that can be a side effect of the terminal
% because the amount of output which is sensitive for refresh delays set. The new
% target is now 50 pages per second for this manual but on this laptop that is
% unlikely to happen any time soon. With tabulateusesize and tabulatesparseskips
% experiments enabled we needed 8.1 second and 44.3 pps.

% \enableexperiments [tabulateusesize]
% \enableexperiments [tabulatesparseskips]

\ifdefined\linebuffering \linebuffering \fi

\enableexperiments[fonts.compact]
%disableexperiments[fonts.accurate]

% \enabledirectives[fonts.injections.method=advance] % tricky ... not all xoffsets are advance robust

% This is only for testing, use the command line (or banner line) instead.
%
% \startluacode
%     lpdf.setencryption {
%         ownerpassword = "password",
%         userpassword  = " ",
%         permissions   = "print,quality"
%     }
% \stopluacode

\pushoverloadmode \unprotect
    % test code
\protect \popoverloadmode

\enabletrackers[system.usage=summary]

\environment luametatex-style
\environment luametatex-private

\startdocument
  [manual=LuaMeta\TeX,
  %status=experimental,
   version=\cldcontext{status.luatex_verbose}]

\component luametatex-titlepage
\component luametatex-firstpage

\startfrontmatter
    \component luametatex-contents
    \component luametatex-introduction
\stopfrontmatter

\startbodymatter
    \component luametatex-modifications
    \component luametatex-lua
    \component luametatex-enhancements
    \component luametatex-fonts
    \component luametatex-languages
    \component luametatex-math
    \component luametatex-building
    \component luametatex-nodes
    \component luametatex-callbacks
    \component luametatex-tex
    \component luametatex-metapost
    \component luametatex-pdf
    \component luametatex-libraries
    \component luametatex-primitives % this generates a list
  % \component luametatex-rejected % local file
\stopbodymatter

\startbackmatter
    \component luametatex-codes
    \component luametatex-registers
    \component luametatex-statistics
    \component luametatex-remarks
\stopbackmatter

\stopdocument