]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/tips/optimising_ikiwiki.mdwn
oops, branch returned now
[git.ikiwiki.info.git] / doc / tips / optimising_ikiwiki.mdwn
index 579157291ff01772ea57d03e38a07c8270d2d7ef..14d619ff824db3662f497884a4d3e5b9301ba811 100644 (file)
@@ -34,7 +34,7 @@ when their wiki was small, and found it got slower as they added pages.
 
 ## use the latest version
 
 
 ## use the latest version
 
-If your version of ikiwiki is not [[!verison]], try upgrading. New
+If your version of ikiwiki is not [[!version]], try upgrading. New
 optimisations are frequently added to ikiwiki, some of them yielding
 *enormous* speed increases.
 
 optimisations are frequently added to ikiwiki, some of them yielding
 *enormous* speed increases.
 
@@ -64,7 +64,7 @@ smaller.
        
        \[[!inline pages="blog/* and link(tag)" show=0 archive=yes quick=yes]]
 
        
        \[[!inline pages="blog/* and link(tag)" show=0 archive=yes quick=yes]]
 
-Only downsides: This won't show titles set by the [[!ikiwiki/directive/meta]]
+Only downsides: This won't show titles set by the [[ikiwiki/directive/meta]]
 directive. And there's no RSS feed for users to use -- but if this page
 is only for the archives or tag for your blog, users should be subscribing
 to the blog's main page's RSS feed instead.
 directive. And there's no RSS feed for users to use -- but if this page
 is only for the archives or tag for your blog, users should be subscribing
 to the blog's main page's RSS feed instead.
@@ -85,7 +85,7 @@ The resulting html file might get big and expensive to generate as you
 keep adding pages.
 
 First, consider removing the "show=title". Then the map will not show page
 keep adding pages.
 
 First, consider removing the "show=title". Then the map will not show page
-titles set by the [[!ikiwiki/directive/meta]] directive -- but will also
+titles set by the [[ikiwiki/directive/meta]] directive -- but will also
 only need to be generated when pages are added or removed, not for every
 page change.
 
 only need to be generated when pages are added or removed, not for every
 page change.
 
@@ -133,13 +133,28 @@ This site's own [[plugins/linkmap]] rarely slows it down, because it
 only shows the [[index]] page, and the small set of pages that link to it.
 That is accomplished as follows:
 
 only shows the [[index]] page, and the small set of pages that link to it.
 That is accomplished as follows:
 
-       \[!linkmap pages="index or (backlink(index)"]]
+       \[[!linkmap pages="index or (backlink(index)"]]
 
 ## overhead of the search plugin
 
 Be aware that the [[plugins/search]] plugin has to update the search index
 whenever any page is changed. This can slow things down somewhat.
 
 
 ## overhead of the search plugin
 
 Be aware that the [[plugins/search]] plugin has to update the search index
 whenever any page is changed. This can slow things down somewhat.
 
+## profiling
+
+If you have a repeatable change that ikiwiki takes a long time to build,
+and none of the above help, the next thing to consider is profiling
+ikiwiki. 
+
+The best way to do it is:
+
+* Install [[!cpan Devel::NYTProf]]
+* `PERL5OPT=-d:NYTProf`
+* `export PER5OPT`
+* Now run ikiwiki as usual, and it will generate a `nytprof.out` file.
+* Run `nytprofhtml` to generate html files.
+* Those can be examined to see what parts of ikiwiki are being slow.
+
 ## scaling to large numbers of pages
 
 Finally, let's think about how huge number of pages can affect ikiwiki.
 ## scaling to large numbers of pages
 
 Finally, let's think about how huge number of pages can affect ikiwiki.
@@ -153,7 +168,7 @@ Finally, let's think about how huge number of pages can affect ikiwiki.
   quickly, but still, lots more pages will make PageSpecs more expensive.
 
 * The backlinks calculation has to consider every link on every page
   quickly, but still, lots more pages will make PageSpecs more expensive.
 
 * The backlinks calculation has to consider every link on every page
-  in the wiki. (In practice, most pages only like to at most a few dozen
+  in the wiki. (In practice, most pages only link to at most a few dozen
   other pages, so this is not a `O(N^2)`, but closer to `O(N)`.)
 
 * Ikiwiki also reads and writes an `index` file, which contains information
   other pages, so this is not a `O(N^2)`, but closer to `O(N)`.)
 
 * Ikiwiki also reads and writes an `index` file, which contains information