Perlのハッシュのバケットってなんだ?
ハッシュのバケットサイズはハッシュをスカラーコンテキストで評価してあげると取れるんだけど、
なんか規則がよくわかりません。
Perlがハッシュを、どのように物理設計に落としてるのかが知れる気がするんだけど。。
my %test = ( a => 1, b => 1 , c => 1, d => 1 , e => 1, f => 1, g => 1 h => 8, j => 9, k => 10 , l => 11 ); print scalar %test; keys %test = 200; print scalar %test;
結果
9/16 11/256
keysでアロケートしてあげると正しい値が取れる(取れている気がする?)けど、
何もしてないと、よくわからない数値がでてきたよ。。
しかも、keyの個数を変えると、アロケートしてやったほうはきっちと追従してくれるけど、
してないほうは、どうも規則性がわからない。。
(keyの個数, バケット) (7, 6/8) (8, 7/16) (9. 8/16) (10, 8/16) (11, 9/16) (12, 10/16) (13, 10/16) ... <||