User "SimonTrew" posted a comment on MediaWiki.r81074.
Full URL: http://www.mediawiki.org/wiki/Special:Code/MediaWiki/81074#c21057
Commit summary:
(bug 235) parser function for conversion of units of measurement.
[[Template:Convert]] on enwiki is a behemoth of a construction that just about
manages to do this sort of conversion, taking {{convert|5|mi|km}} and
outputting "5 miles (8 km)", etc. To port this to another wiki requires
copying over three and a half thousand subtemplates. The additional load
produced by including numerous copies of this template is measurable on large
pages on enwiki, and it eats voraciously into the template limits.
This revision introduces {{#convert: 5 mi | km }}, outputting "8 km" or
thereabouts. See http://www.mediawiki.org/wiki/User:Happy-melon/Convert for
more details, or look at the examples in the parser tests.
In a very rough profile, comparing 50 calls to {{convert}} verses the same 50
calls to the wrapper template shown at the link above, the parser function
implementation reduces page load time by 72%, preprocessor node count by 83%,
post-expand include size by 86% and template argument size by 97%. More
detailed profiling would probably reveal places where extra caching could
improve performance further.
The primary reason for putting it in ParserFunctions instead of its own
extension is availability: PFs are already available across the cluster, and
it's accepted as an essential extension for any wiki wishing to emulate or
mirror WMF content. One less separate extension installed on the cluster is
one less extension which has to be matched by reusers.
It's still missing a lot of units, which I ran out of patience to copy from
{{convert}}; I thought I'd get some feedback on the infrastructure first.
Comment:
I'm not sure that dimensional analysis is helpful — actually it is
sometimes positively harmful. People for example measure their tyre pressure in
pounds per square inch, although dimensionally it is foot-pounds per square
inch, nobody actually says that in real life. (Sweeping statement there I
know.) Another interesting one is miles per gallon versus litres per hundred
kilometres, where it is a reciprocal conversion not a multiplication. In the
UK, everyone including the auto companies quotes in miles per gallon, even
though in the small print it will be in l/100km, and we buy our fuel in litres.
I note also the difference in US and UK spelling for liter/litre, meter/metre
etc, and wonder how this is coped with. It doesn't matter so much for EN:WP but
for WIkimedia which has to support all languages perhaps is relevant — as
I said above, as a wikignome on EN:WP I am not very well up on the scope of
Wikimedia, so I can imagine wiser people than I have already thought of this
kind of thing. ~~~~
_______________________________________________
MediaWiki-CodeReview mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-codereview