Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

parallel mknmz (Re: mknmz next generation)



備忘録です。 (すぐに実装できるわけではありません)

Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx> wrote:

>もちろん、すべてを Cで書くという方針でもいいです。どうせ C 
>で書くなら、文書を 1つづつ読み込んで処理する部分を multi
>threading にするといいと思います。この処理は並列化できるはず
>なので、multi processor の計算機ではぐっと速くなるでしょう。

週末に野首さんに会ったときに mknmz の並列化を望んでいる人が
いる、という話を聞きました。

そこで、単順に fork & exec で複数の mknmz を並列に走らせると
いう方法を思いつきました。

まず、親 mknmz はインデックス作成の対象となる文書のリストを 
n 個に分割し、子 mknmz を n 個、生成します。次に、子 mknmz 
の各プロセスは自分の担当の文書に対してインデックスを作成しま
す。

そして、最後に親 mknmz は子 mknmz によって別個に作られた各イ
ンデックスをマージします。インデックスのマージは [namazu-dev
1088] の方法で行います。

単純な方法ですが、複数のCPUを積んでいる計算機では効果がある
と思います。とはいえ、そもそも perl で書かれているという時点
で mknmz に高速性を求めるのはおかしな気はします。:)

# 考え方そのものは C版の mknmz に流用できるかな?

p.s.
ちなみに、僕は「富豪的プログラミング」が好きです。:-)
<http://www.csl.sony.co.jp/person/masui/fugo.html>

-- Satoru Takabayashi