Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
sgmt: module loading
- From: Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx>
- Date: Sun, 15 Oct 2000 16:17:33 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 00985
sgmt の sgmt_new, sgmt_destroy の内部的な挙動を変えました。
従来のモジュールの扱い:
sgmt_new: モジュールをロードする
sgmt_destroy: モジュールを解放する
新方式:
sgmt_new: 初回のみモジュールをロード
sgmt_destroy: モジュールの解放はしない
頻繁に sgmt_new, sgmt_destroy を呼び出す使い方を考えると、そ
の度にモジュールのロード・解放を繰り返すのは非効率です。そこ
で、一度、ロードしたモジュールは解放せずに再利用し続けること
にしました。もちろん2重にロードすることはありません。
# 従来の方式では、ファイル単位で sgmt_new, sgmt_destroy を呼
# び出す使い方では、10,000 ファイルを処理するのに 10,000回の
# g_module_open, g_module_close が行われます。さすがに、それ
# は非効率かなと。
「モジュールの解放はしない」という方針には、もしかしたら問題
があるかもしれません。問題があれば指摘してください。
p.s.
dlopen && dlclose がプロセスのサイズにどのような影響を及ぼす
か気になったので、調べました。OSによって異なると思いますが、
Linux では dlopen でプロセスのサイズが増え、dlcloseではプロ
セスのサイズが減るようです (減らないと予想していた)。
実験用プログラム:
<http://cl.aist-nara.ac.jp/~satoru-t/tmp/gmodule-process.c>
/proc/PID/status を開くのでたぶん Linuxでしか動きません。
--
高林 哲 (Takabayashi, Satoru)
http://cl.aist-nara.ac.jp/~satoru-t/