aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/multi-thread_ikiwiki.mdwn
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2012-01-28 22:50:28 -0400
committerJoey Hess <joey@kitenet.net>2012-01-28 22:50:28 -0400
commitc6b5d3a8c9b2002575e10f0030c3476588ccb782 (patch)
treeb40c6c44a209aad72c49361d3189ebc8dd5ebadc /doc/todo/multi-thread_ikiwiki.mdwn
parent6c3cdb04ac1794d2b3fd24f7da4c9ec4aac05d11 (diff)
downloadikiwiki-c6b5d3a8c9b2002575e10f0030c3476588ccb782.tar
ikiwiki-c6b5d3a8c9b2002575e10f0030c3476588ccb782.tar.gz
response
Diffstat (limited to 'doc/todo/multi-thread_ikiwiki.mdwn')
-rw-r--r--doc/todo/multi-thread_ikiwiki.mdwn23
1 files changed, 23 insertions, 0 deletions
diff --git a/doc/todo/multi-thread_ikiwiki.mdwn b/doc/todo/multi-thread_ikiwiki.mdwn
index 0beea6fe2..358185a22 100644
--- a/doc/todo/multi-thread_ikiwiki.mdwn
+++ b/doc/todo/multi-thread_ikiwiki.mdwn
@@ -64,3 +64,26 @@ Disclaimer: I know nothing of the Perl approach to parallel processing.
>>> I'm not really sure what the best solution is. Me, I profile my IkiWiki builds and try to tweak performance for them... but there's only so much I can do.
>>> --[[KathrynAndersen]]
+
+>>>> IMHO, the best way to get a multithreaded ikiwiki is to rewrite it
+>>>> in haskell, using as much pure code as possible. Many avenues
+>>>> then would open up to taking advantage of haskell's ability to
+>>>> parallize pure code.
+>>>>
+>>>> With that said, we already have some nice invariants that could be
+>>>> used to parallelize page builds. In particular, we know that
+>>>> page A never needs state built up while building page B, for any
+>>>> pages A and B that don't have a dependency relationship -- and ikiwiki
+>>>> tracks such dependency relationships, although not currently in a form
+>>>> that makes it very easy (or fast..) to pick out such groups of
+>>>> unrelated pages.
+>>>>
+>>>> OTOH, there are problems.. building page A can result in changes to
+>>>> ikiwiki's state; building page B can result in other changes. All
+>>>> such changes would have to be made thread-safely. And would the
+>>>> resulting lock contention result in a program that ran any faster
+>>>> once parallelized?
+>>>>
+>>>> Which is why [[rewrite_ikiwiki_in_haskell]], while pretty insane, is
+>>>> something I keep thinking about. If only I had a spare year..
+>>>> --[[Joey]]