[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 メーリングリストの案内