User:Sbb/sandbox/Episode table
This is an experiment to determine if there is a substantial parser benefit or penalty when using different (otherwise equivalent) uses of the {{Episode table}}
template.
Background
[edit]The {{Episode table}}
template generates table header information for lists of episodes of TV shows. Usually, the episode tables are separated per season, and quite often, the episode tables are given their own articles, which are then usually transcluded in higher-level articles about the TV series or total episodes. For instance, the article on List of Family Guy episodes looks something like:
==Episode list== ===Season 1 (1999)=== {{main|Family Guy (season 1)}} {{:Family Guy (season 1)}} ===Season 2 (1999–2000)=== {{main|Family Guy (season 2)}} {{:Family Guy (season 2)}} ...
The Family Guy (season 1) article contains the following episode list:
<onlyinclude>{{#invoke:Episode table|main|background = #FBEC5C |overall= 5 |season= 5 |title= 23 |director= 18 |writer= 25 |airdate= 16 |prodcode= 8 |country= U.S. |episodes= {{#invoke:Episode list|sublist|Family Guy (season 1) | EpisodeNumber = 1 | EpisodeNumber2 = 1 | Title = [[Death Has a Shadow]] | DirectedBy = [[Peter Shin]] | WrittenBy = [[Seth MacFarlane]] | OriginalAirDate = {{Start date|1999|1|31}} | ProdCode = 1ACX01 | ShortSummary = [[Peter Griffin|Peter]] applies for [[welfare (financial aid)|welfare]] to support his family after losing his job. He receives a check for $150,000 due to a misplaced decimal point, and uses it to buy lavish presents for his family. [[Lois Griffin|Lois]] is upset when she finds out after receiving a new welfare check in the mail; Peter attempts to make her happy by dropping his surplus money out of a blimp above [[Super Bowl XXXIII]] with the help of [[Brian Griffin|Brian]]. Both are arrested by security guards and prosecuted for [[welfare fraud]]. At the courthouse, Lois pleads with the judge not to imprison Peter; [[Stewie Griffin|Stewie]], grudgingly coming to realize his dependence on his parents, influences the judge to reconsider the sentence. | LineColor = FBEC5C }} <!-- ... deleted the remainder of episodes: {{$invoke|Episode list|sublist|Family Guy (season 1)}} --> }}</onlyinclude>
Simplifying the pattern, it looks like:
<onlyinclude>{{Episode table |episodes= {{Episode list|sublist|(Show/season)}} ... {{Episode list|sublist|(Show/season)}} }}</onlyinclude>
But, using the |dontclose=y
parameter, it could just as well be:
<onlyinclude>{{Episode table |dontclose=y }} {{Episode list|sublist|(Show/season)}} ... {{Episode list|sublist|(Show/season)}} {{End|Episode table|html=y}}</onlyinclude>
Note that in real articles, the table closure on the last line varies between {{End|Episode table|html=y}}
, </table>
, and even sometimes, clearly erroneously, }}
.
Test article
[edit]I used the List of Annoying Orange episodes article because it is a huge article with over 10 template transclusions of {{Episode table}}
, in an attempt to get some meaningful data about table parsing and parser function execution time. The results are shown below.
Test cases
[edit]- User:Sbb/sandbox/Episode table/dontclose
- Uses
{{#invoke Episode table|dontclose=1}}
- User:Sbb/sandbox/Episode table/episodes
- Uses
{{#invoke Episode table|episodes=}}
(embedded{{Episode list|list}}
s) - User:Sbb/sandbox/Episode table/dontclose noinvoke
- Uses
{{Episode table|dontclose=1}}
- User:Sbb/sandbox/Episode table/episodes noinvoke
- Uses
{{Episode table|episodes=}}
(embedded{{Episode list|list}}
s)
Results
[edit]Type | CPU time usage (s) | Real time usage (s) | Preprocessor visited node count [/1000000] | Post‐expand include size (bytes) [/2097152] | Template argument size (bytes) [/2097152] | Highest expansion depth [/40] | Expensive parser function count [/500] | Unstrip recursion depth [/20] | Unstrip post‐expand size [/5000000] (bytes) | Lua time usage [/10.000] (s) | Lua memory usage [/52428800] (bytes) |
---|---|---|---|---|---|---|---|---|---|---|---|
#invoke , dontclose=y }}
|
5.237 | 5.347 | 91195 | 755041 | 24578 | 17 | 0 | 1 | 3353 | 1.872 | 20684097 |
#invoke , |episodes=
|
4.341 | 4.483 | 89759 | 1357849 | 24566 | 19 | 0 | 1 | 3352 | 1.761 | 21157765 |
dontclose=y }}
|
5.442 | 5.527 | 91816 | 889348 | 24578 | 17 | 0 | 1 | 3279 | 2.237 | 20701014 |
|episodes=
|
4.593 | 4.692 | 90728 | 1391671 | 24566 | 19 | 0 | 1 | 3278 | 1.804 | 20611774 |
Lua profile & transclusion expansion report
[edit]#invoke
, dontclose=y }}
[edit]Lua Profile: Scribunto_LuaSandboxCallback::getExpandedArgument 1760 ms 54.7% ? 300 ms 9.3% recursiveClone <mwInit.lua:41> 160 ms 5.0% Scribunto_LuaSandboxCallback::match 100 ms 3.1% Scribunto_LuaSandboxCallback::expandTemplate 80 ms 2.5% dataWrapper <mw.lua:668> 60 ms 1.9% type 60 ms 1.9% makeCheckSelfFunction <libraryUtil.lua:59> 40 ms 1.2% <mwInit.lua:41> 40 ms 1.2% init <Module:Arguments> 40 ms 1.2% [others] 580 ms 18.0% Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 3703.865 1 -total 34.20% 1266.864 677 Template:Start_date 20.00% 740.661 690 Template:MONTHNAME 13.52% 500.604 690 Template:MONTHNUMBER 5.87% 217.341 57 Template:Episode_list 4.87% 180.205 1 Template:Series_overview 4.19% 155.051 1 Template:Cite_web 2.93% 108.459 1 Template:Aired_episodes 0.49% 18.171 1 Template:DMCA 0.46% 17.096 12 Template:End_date
#invoke
, |episodes=
[edit]Lua Profile: Scribunto_LuaSandboxCallback::getExpandedArgument 1720 ms 52.8% ? 460 ms 14.1% recursiveClone <mwInit.lua:41> 200 ms 6.1% Scribunto_LuaSandboxCallback::match 100 ms 3.1% Scribunto_LuaSandboxCallback::expandTemplate 80 ms 2.5% <mw.title.lua:50> 60 ms 1.8% <Module:Arguments:232> 40 ms 1.2% init <Module:Lang> 40 ms 1.2% attr <mw.html.lua:248> 40 ms 1.2% require <package.lua:89> 40 ms 1.2% [others] 480 ms 14.7% Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 3446.915 1 -total 32.88% 1133.204 677 Template:Start_date 18.09% 623.567 690 Template:MONTHNAME 16.06% 553.668 3 Template:Episode_table 11.90% 410.155 690 Template:MONTHNUMBER 6.12% 210.988 57 Template:Episode_list 4.76% 164.031 1 Template:Cite_web 4.29% 147.869 1 Template:Series_overview 2.92% 100.610 1 Template:Aired_episodes 0.58% 20.064 12 Template:End_date
dontclose=y }}
[edit]Lua Profile: Scribunto_LuaSandboxCallback::getExpandedArgument 1940 ms 49.7% recursiveClone <mwInit.lua:41> 360 ms 9.2% ? 300 ms 7.7% Scribunto_LuaSandboxCallback::match 180 ms 4.6% Scribunto_LuaSandboxCallback::anchorEncode 120 ms 3.1% <mw.title.lua:50> 100 ms 2.6% dataWrapper <mw.lua:668> 80 ms 2.1% css <mw.html.lua:328> 80 ms 2.1% validateData <mw.lua:724> 80 ms 2.1% Scribunto_LuaSandboxCallback::getAllExpandedArguments 60 ms 1.5% [others] 600 ms 15.4% Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 4461.165 1 -total 86.11% 3841.619 664 Template:Episode_list 33.72% 1504.157 677 Template:Start_date 18.48% 824.569 690 Template:MONTHNAME 11.29% 503.483 690 Template:MONTHNUMBER 3.89% 173.694 1 Template:Cite_web 3.64% 162.543 1 Template:Series_overview 2.48% 110.439 1 Template:Aired_episodes 1.23% 54.761 13 Template:Episode_table 0.57% 25.585 12 Template:End_date
|episodes=
[edit]Lua Profile: Scribunto_LuaSandboxCallback::getExpandedArgument 1840 ms 54.8% ? 400 ms 11.9% Scribunto_LuaSandboxCallback::match 160 ms 4.8% Scribunto_LuaSandboxCallback::anchorEncode 100 ms 3.0% Scribunto_LuaSandboxCallback::callParserFunction 80 ms 2.4% type 60 ms 1.8% chunk <Module:Episode_list> 60 ms 1.8% (for generator) 60 ms 1.8% <mw.title.lua:50> 60 ms 1.8% Scribunto_LuaSandboxCallback::expandTemplate 60 ms 1.8% [others] 480 ms 14.3% Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 3587.252 1 -total 82.63% 2964.194 664 Template:Episode_list 60.91% 2185.056 13 Template:Episode_table 32.29% 1158.424 677 Template:Start_date 18.21% 653.391 690 Template:MONTHNAME 11.95% 428.820 690 Template:MONTHNUMBER 5.13% 184.053 1 Template:Series_overview 4.59% 164.592 1 Template:Cite_web 3.10% 111.160 1 Template:Aired_episodes 0.66% 23.619 12 Template:End_date