[Mew-dist 09784] Re: hash on Emacs (toward threading)
Daiki Ueno
ueno at example.com
1999年 7月 20日 (火) 01:59:04 JST
上野と申します。
;;; In [Mew-dist : No.09776] /
;;; Shigeya Suzuki <shigeya at example.com> writes:
kazu> Emacs の変数や関数の値の検索にはこの obarray が利用されています。実
kazu> 際に obarray という大域変数があるので、評価してみるといいでしょう。
kazu> この obarray の大きさは 1511 に決め打ちされています。
XEmacs では この値は 16411 などという大きさになっていますね。
# これとは別に XEmacs の builtin の hash 実装は closed hash で
# こちらは当然ながら大きさも動的に変化します。
kazu> あと、ハッシュに関して深い知識のある方は、ハッシュはどういうときに大
kazu> きくすべきか教えてもらえると嬉しいです。
Shigeya> 深い知識というわけではないけど、そもそも、hash 関数にあった
Shigeya> bucket size ってのがあると思うので、この配列の大きさかえても、関
Shigeya> 数自体が変わらないと意味ないかも。
疑わしいですが、均等にばらけていると看倣せるのなら
要素数が bucket size の 2倍を越える程度で良いのではないでしょうか。
# 同様に obarray を用いた cl の hash マクロは その3倍を閾値にしています。
;;; In [Mew-dist : No.09781] /
;;; itojun at example.com writes:
itojun> >PostgressSQL を使うか、Emacs obarray を使うか、けっこう瀬戸際です。
itojun> >(PostgressSQL を太らせて、使わない時は page out して頂く方が無難
itojun> かも。)
itojun> Berkeley dbってemacsからは叩けないっすよねえ。
とある ML で話題になりましたが、XEmacs では BerkeleyDB, DBM を叩く関数が
用意されています。# Wanderlust でも XEmacs の場合にはこれを利用します。
# このネタが出たときに Emacs20 DL を利用して XEmacs の database.c を
# dynamic load できるようにしたものがありますが、結局これも Emacs の実装を
# 選ぶので、この場面では意味がないでしょう。^_^;;
PostgreSQL を利用するか否かはユーザが実行時に選択可能で、かつ
各 Emacs 実装で最適化された database 関数の実装は compile 時に自動的に選択
するのが現実的な解かなと思います。
--
Daiki Ueno (ueno at example.com)
Mew-dist メーリングリストの案内