User:Sbb/sandbox/Episode table

From Wikipedia, the free encyclopedia

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