なかだです。 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はできる。 中田 伸悦