Go to file
Joey Hess 2a7721febd Avoid %links accumulating duplicates. (For TOVA)
This is sorta an optimisation, and sorta a bug fix. In one
test case I have available, it can speed a page build up from 3
minutes to 3 seconds.

The root of the problem is that $links{$page} contains arrays of
links, rather than hashes of links. And when a link is found,
it is just pushed onto the array, without checking for dups.

Now, the array is emptied before scanning a page, so there
should not be a lot of opportunity for lots of duplicate links
to pile up in it. But, in some cases, they can, and if there
are hundreds of duplicate links in the array, then scanning it
for matching links, as match_link and some other code does,
becomes much more expensive than it needs to be.

Perhaps the real right fix would be to change the data structure
to a hash. But, the list of links is never accessed like that,
you always want to iterate through it.

I also looked at deduping the list in saveindex, but that does
a lot of unnecessary work, and doesn't completly solve the problem.

So, finally, I decided to add an add_link function that handles deduping,
and make ikiwiki-transition remove the old dup links.
2009-05-06 00:27:24 -04:00
Bundle remove dup 2009-04-06 13:34:31 -04:00
IkiWiki Avoid %links accumulating duplicates. (For TOVA) 2009-05-06 00:27:24 -04:00
cpan enhancesments for shared hosting 2008-05-05 14:51:26 -04:00
debian Avoid %links accumulating duplicates. (For TOVA) 2009-05-06 00:27:24 -04:00
doc Avoid %links accumulating duplicates. (For TOVA) 2009-05-06 00:27:24 -04:00
plugins function injection overhaul 2008-10-21 17:57:19 -04:00
po Updated Danish translation from Jonas Smedegaard. Closes: #525751 2009-04-27 13:54:48 -04:00
t Fix git test suite to use a bare repo. 2009-04-04 14:58:34 -04:00
templates comments: Add link to comment post form to allow user to sign in if they wish to, if the configuration makes signin optional for commenting. 2009-04-23 14:56:10 -04:00
underlays relativedate: Deal with clock skew. 2009-04-23 13:39:42 -04:00
.gitignore update ignore 2008-07-26 23:04:54 -04:00
.perlcriticrc fix a common case typo 2008-08-12 15:48:44 -04:00
CHANGELOG * Work on firming up the plugin interface: 2006-09-09 22:50:27 +00:00
IkiWiki.pm Avoid %links accumulating duplicates. (For TOVA) 2009-05-06 00:27:24 -04:00
Makefile.PL debhelper v7; rules file minimisation. 2009-02-15 20:12:16 -05:00
NEWS * Work on firming up the plugin interface: 2006-09-09 22:50:27 +00:00
README reformat 2008-09-09 20:24:59 -04:00
auto-blog.setup add blogspam to auto-blog 2009-01-16 22:42:30 -05:00
auto.setup remove hardlink settings from auto.setup files 2009-01-12 20:04:01 -05:00
docwiki.setup remove cruft that crept in during a debugging session 2009-05-05 20:13:40 -04:00
gitremotes markdown fixes 2008-12-11 13:31:25 -05:00
ikiwiki-makerepo ikiwiki-makerepo: Avoid using abs_path, as it apparently fails on nonexistant directories with some broken perl versions. 2009-05-05 14:15:28 -04:00
ikiwiki-mass-rebuild fix two build bugs 2008-06-13 13:05:44 -04:00
ikiwiki-transition Avoid %links accumulating duplicates. (For TOVA) 2009-05-06 00:27:24 -04:00
ikiwiki-update-wikilist add new wiki to wikilist 2008-07-27 16:01:29 -04:00
ikiwiki-w3m.cgi * Support a w3mmode, which lets w3m run ikiwiki using its local CGI 2006-07-07 21:00:48 +00:00
ikiwiki.in Fix unusual --setup --post-commit command line option combo. 2009-02-09 14:58:10 -05:00
mdwn2man improved period escape 2008-05-30 18:01:16 -04:00
pm_filter typo 2009-02-04 13:45:54 -05:00
wikilist Fix typo. 2007-04-09 23:54:32 +00:00

README

Use ./Makefile.PL to generate a Makefile, "make" will build the
documentation wiki and a man page, and "make install" will install ikiwiki.

All other documentation is in the ikiwiki documentation wiki, which is also
available online at <http://ikiwiki.info/>


A few special variables you can set while using the Makefile:

  PROFILE=1 turns on profiling for the build of the doc wiki.
  (Uses Devel::Profile)

  NOTAINT=0 turns on the taint flag in the ikiwiki program. (Not recommended
  unless your perl is less buggy than mine -- see
  http://bugs.debian.org/411786)

  There are also other variables supported by MakeMaker, including PREFIX,
  INSTALL_BASE, and DESTDIR. See ExtUtils::MakeMaker(3).

  In particular, INSTALL_BASE is very useful if you want to install ikiwiki
  to some other location, as it configures it to see the perl libraries
  there. See `doc/tips/nearlyfreespeech.mdwn` for an example of using this to
  install ikiwiki and its dependencies in a home directory.