From: "K.Kosako" Date: 2002-02-27T16:17:13+09:00 Subject: [ruby-dev:16140] Re: Hash implementation MORITA Naoyukiさんの<20020227152832B.naohaq@ps.sakura.ne.jp>から > Hashクラスの動作がとても重いのでRuby 1.6.6 の hash.c と st.c をちょっ > と見てみたんですが、Hashクラスをnewした時に生成されるhashのbinの数(?) > が現在の実装だと11しか取られないようなので、hashのサイズが少し大きくな > ると極端に効率が低下してしまいます。 登録要素数とbinの数の比が一定の値(5)以上になると、 自動的にサイズが拡張されます。(ADD_DIRECT()の中で) 関係ないかもしれませんが、今、st.cを読んで見ると、 table->num_binsにセットされる値が偶数になっている のではないかと思うのですが。 size = new_size()で返される値は素数ですが、 table->num_bins = size - 1としているので。 (昔、hash_val & table->num_binsだったのを、 hash_val % table->num_binsに変更した名残?) -- 小迫@ソフネック 渋谷区恵比寿1-15-1