aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm14
-rw-r--r--debian/changelog1
2 files changed, 12 insertions, 3 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 9ccb92a4d..af8e07d7f 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1781,7 +1781,8 @@ sub enable_commit_hook () {
sub loadindex () {
%oldrenderedfiles=%pagectime=();
- if (! $config{rebuild}) {
+ my $rebuild=$config{rebuild};
+ if (! $rebuild) {
%pagesources=%pagemtime=%oldlinks=%links=%depends=
%destsources=%renderedfiles=%pagecase=%pagestate=
%depends_simple=%typedlinks=%oldtypedlinks=();
@@ -1821,10 +1822,16 @@ sub loadindex () {
foreach my $src (keys %$pages) {
my $d=$pages->{$src};
- my $page=pagename($src);
+ my $page;
+ if (exists $d->{page} && ! $rebuild) {
+ $page=$d->{page};
+ }
+ else {
+ $page=pagename($src);
+ }
$pagectime{$page}=$d->{ctime};
$pagesources{$page}=$src;
- if (! $config{rebuild}) {
+ if (! $rebuild) {
$pagemtime{$page}=$d->{mtime};
$renderedfiles{$page}=$d->{dest};
if (exists $d->{links} && ref $d->{links}) {
@@ -1895,6 +1902,7 @@ sub saveindex () {
my $src=$pagesources{$page};
$index{page}{$src}={
+ page => $page,
ctime => $pagectime{$page},
mtime => $pagemtime{$page},
dest => $renderedfiles{$page},
diff --git a/debian/changelog b/debian/changelog
index fcd47494d..0f6a44c30 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,7 @@ ikiwiki (3.20130904.2) UNRELEASED; urgency=low
* Fixed unncessary tight loop hash copy in saveindex where a pointer
can be used instead. Can speed up refreshes by nearly 50% in some
circumstances.
+ * Optmised loadindex by caching the page name in the index.
-- Joey Hess <joeyh@debian.org> Thu, 05 Sep 2013 10:01:10 -0400