なかだです。

At Sun, 9 Sep 2007 22:50:58 +0900,
Tanaka Akira wrote in [ruby-dev:31766]:
> > [ruby-dev:31729]からの差分です。
> 
> 2要素のとき packed でなくなります。

> PACKABLE の第2引数が問題ですかね。

たしかに、PACKED_RATIOをかけちゃいけませんね。

  #define PACKABLE(table, n) ((n) <= ST_DEFAULT_INIT_TABLE_SIZE)

と直して[ruby-dev:31761]のコードを試してみました。
st-bench3.rbが3要素、st-bench4.rbが4要素です。

./miniruby-normal st-bench3.rb
VmSize:   199740 kB

real    0m2.263s
user    0m2.104s
sys     0m0.168s

./miniruby-packed st-bench3.rb
VmSize:   105896 kB

real    0m1.261s
user    0m1.160s
sys     0m0.100s

./miniruby-normal st-bench4.rb
VmSize:   230892 kB

real    0m2.687s
user    0m2.448s
sys     0m0.248s

./miniruby-packed st-bench4.rb
VmSize:   230896 kB

real    0m2.765s
user    0m2.540s
sys     0m0.216s

3要素までのメモリ節約と高速化はたしかに顕著です。対する4要素での
速度低下は3%弱。3%を大きいとみるか、3要素までの効果に対するトレー
ドオフとみるか。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦