Ω/CHISEの処理速度(Re:Ω/CHISE with book class)

守岡知彦 / MORIOKA Tomohiko tomo @ kanji.zinbun.kyoto-u.ac.jp
2004年 1月 22日 (木) 18:43:07 JST


>>>>> In [chise-ja : No.00318] 
>>>>>	"宮崎さん" = Izumi MIYAZAKI <imiyazaki @ bun.kyoto-u.ac.jp> wrote:

宮崎さん> 外部OTPの中にも、たぶん無駄なDBへのアクセスが残っていると思
宮崎さん> うので、もう少し外部OTP自体の処理速度を上げれるかもしれませ
宮崎さん> ん。無駄なDBへのアクセスがあるのは、私がちゃんとDBの中身を理
宮崎さん> 解せずに場当たり的に対処している所があるからです。

無駄な DB へのアクセスはキャッシュによって解決できるし、無駄じゃないの
はキャッシュでは解決できない訳ですね。


宮崎さん> あと、multifont を使うと、かなりDBへのアクセスが増えるのもあ
宮崎さん> りますね。

宮崎さん> ただ、外部OTP自体の処理速度は、普通のPerlスクリプトとして
宮崎さん> 外部OTPを実行してもらえば分かりますが、Ωから呼んだ時ほどひ
宮崎さん> どいことはありません。

宮崎さん> 例)

宮崎さん>   $ perl
/usr/local/share/texmf/omega/ocp/local/chise/inCHISE -i Utf8mcs -o
UniMulti test.tex

宮崎さん> # プリアンブルやマクロまで処理してしまいますが。

そうですね(とはいうものの、500 頁弱のデータを食わすと遅いです)。


宮崎さん> で、何故Ωから呼んだ時にこれほど遅くなるかというと、Ωがパラ
宮崎さん> グラフ毎にOTPを呼び出すため、DBのopen/closeがパラグラフ毎に
宮崎さん> 起こってしまうからだと思います。HDDへのアクセスも伴いますし。

なるほど。

宮崎さん> libchiseを使って、その辺を改善する方法はあるでしょうか?
宮崎さん> 具体的な方法が分からないので、もう少し説明してもらえないでしょ
宮崎さん> うか?

現状では解決できないし、将来的に libchise がキャッシュをサポートするよ
うになっても、小さなプロセスが次々に生まれては消える状況ではキャッシュ
のメリットは多分ないでしょう。むしろ、オーバーヘッドのコストだけ負担す
るはめになったりして。

;; 可能性としては、libchise を client & server 化して、server 側でキャッ
;; シュするとか、server 側を Berkeley DB ではなく on-memory な 
;; database にするという手は考えられます。後者はちょっと魅力的ですが、
;; 前者は今時の architecture ではあんまり御利益がない気がします。Anthy
;; の教えに従えば、害悪といえるかも知れません。

やはり、Ω の協力が要りそうですね。とはいえ、Ω がパラグラフ単位に OTP
を呼ぶのは、きっと、TeX がパラグラフ単位に処理するからなんでしょうね。
もしそうだとすると、Apache の mod_perl みたいな仕組を作るとか、いっそ
Ω そのものを CHISE 化するとか(^_^;しないと難しいのかも。うむむ。

-- 
===『幾千億の分子に分かれても ========================================
     決して忘れない。    
     この宇宙が終るまで』              守岡 知彦 (MORIOKA Tomohiko)
====================== Email: <tomo @ kanji.zinbun.kyoto-u.ac.jp> ======




More information about the CHISE-ja mailing list