calendar, inline, map: don't pre-join dependencies
authorSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>
Thu, 18 Jun 2009 14:55:55 +0000 (15:55 +0100)
committerSimon McVittie <smcv@ http://smcv.pseudorandom.co.uk/>
Mon, 24 Aug 2009 22:18:16 +0000 (23:18 +0100)
The new dependency handling works better (eliminates more duplicates) if
dependencies are split up. On the same wiki mentioned in the previous
commit, this saves about a second (i.e. 4%) on the same test.

IkiWiki/Plugin/calendar.pm
IkiWiki/Plugin/inline.pm
IkiWiki/Plugin/map.pm

index c25893f726ca96870bdb34389b9ab736c3dee745..5d16dff75ba7a98a68c3fc8c94d9d9378cb11732 100644 (file)
@@ -212,7 +212,9 @@ EOF
        add_depends($params{page}, $params{pages});
        # Explicitly add all currently linked pages as dependencies, so
        # that if they are removed, the calendar will be sure to be updated.
        add_depends($params{page}, $params{pages});
        # Explicitly add all currently linked pages as dependencies, so
        # that if they are removed, the calendar will be sure to be updated.
-       add_depends($params{page}, join(" or ", @list));
+       foreach my $p (@list) {
+               add_depends($params{page}, $p);
+       }
 
        return $calendar;
 }
 
        return $calendar;
 }
index 3a2f4b7bc37caa0d52113ec30ddbcbc310314a82..a501566b554d11cd1894878637aaf5d2204089d4 100644 (file)
@@ -251,7 +251,9 @@ sub preprocess_inline (@) {
        # Explicitly add all currently displayed pages as dependencies, so
        # that if they are removed or otherwise changed, the inline will be
        # sure to be updated.
        # Explicitly add all currently displayed pages as dependencies, so
        # that if they are removed or otherwise changed, the inline will be
        # sure to be updated.
-       add_depends($params{page}, join(" or ", $#list >= $#feedlist ? @list : @feedlist));
+       foreach my $p ($#list >= $#feedlist ? @list : @feedlist) {
+               add_depends($params{page}, $p);
+       }
        
        if ($feeds && exists $params{feedpages}) {
                @feedlist=pagespec_match_list(\@feedlist, $params{feedpages}, location => $params{page});
        
        if ($feeds && exists $params{feedpages}) {
                @feedlist=pagespec_match_list(\@feedlist, $params{feedpages}, location => $params{page});
index 826dbbd66ba68dee4401b259c2d3b87ae7e5d1ea..54146dc467bdcb513e426257a6fd0879005cd35a 100644 (file)
@@ -73,7 +73,9 @@ sub preprocess (@) {
        add_depends($params{page}, $params{pages});
        # Explicitly add all currently shown pages, to detect when pages
        # are removed.
        add_depends($params{page}, $params{pages});
        # Explicitly add all currently shown pages, to detect when pages
        # are removed.
-       add_depends($params{page}, join(" or ", keys %mapitems));
+       foreach my $item (keys %mapitems) {
+               add_depends($params{page}, $item);
+       }
 
        # Create the map.
        my $parent="";
 
        # Create the map.
        my $parent="";