Last modified: 2014-06-19 21:37:25 UTC
Currently, the parser considers all #ifexist calls as an "expensive" call. The problem occurs when you have a page which includes a template with a single #ifexist call several times. The page checked for existence is always the same but the total function call is multiplied by the number of times the template is included. A solution would be to cache #ifexist results (and other expensive functions') and use them, without incrementing the expensive function call counter.
In fact, those repeated checks will be hitting Title::newFromText instead of making db calls.
All right. So, it means they are already using a cache but still being considered as expensive. In that case, just the expensive call counter needs no update.
Right. Although it may be tricky, since the cache is at a lower level thabn parserfunctions.
Related URL: https://gerrit.wikimedia.org/r/65828 (Gerrit Change Ie4dd9fd647dc79a2b31bc44ef8b6a641b54cfb78)
Change 65828 merged by Aaron Schulz: (bug 22808) Don't count "expensive" calls for cached titles https://gerrit.wikimedia.org/r/65828