]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/bugs/editing_gitbranch_template_is_really_slow.mdwn
unconfuse
[git.ikiwiki.info.git] / doc / bugs / editing_gitbranch_template_is_really_slow.mdwn
index 028a5b2fa57320c4cc25156b9700336743c8e3e5..d8af150c1077329a331e757c330a0414167d5505 100644 (file)
@@ -14,4 +14,18 @@ Easy to reproduce offline:
 * `touch templates/gitbranch.mdwn`
 * `/usr/bin/perl -Iblib/lib ikiwiki.in -setup docwiki.setup -refresh`
 
 * `touch templates/gitbranch.mdwn`
 * `/usr/bin/perl -Iblib/lib ikiwiki.in -setup docwiki.setup -refresh`
 
+NYTProf says:
+
+    # spent 279s (237+41.8) within IkiWiki::bestlink which was called 13988949 times, avg 20µs/call:
+    # 13150827 times (222s+37.2s) by IkiWiki::PageSpec::match_link at line 2692, avg 20µs/call
+    # 829606 times (14.9s+4.51s) by IkiWiki::PageSpec::match_link at line 2687, avg 23µs/call
+    ...
+    sub bestlink ($$) {
+
+which is about half the execution time (458s on my laptop).
+
+Adding code to log each call to match_backlink indicates that a large part
+of the problem is that it evaluates the pagespec
+`backlink(plugins/goodstuff)` up to a million times, with various pages and locations.
+
 --[[smcv]]
 --[[smcv]]