ワナベと申します。

09/12/06 Yusuke Endoh <redmine / ruby-lang.org>:
> 現在のシンボルテーブルは、シンボルごとに String のインスタンスを
> 割り当ててシンボル名を管理しますが、そのせいで GC の効率が落ちて
> いると思います。
>
> String ではなく ALLOC で直接確保した領域で管理するパッチを書きま
> した。極端な例ではこのくらい早くなります。
(中略)
> どなたか追試してくださると助かります。私の環境で make test-all は
> 通っています。

興味がありますので試してみたところ、
少し不思議な結果になりましたので報告させていただきます。
詳細はわかりませんが、環境が貧弱であることが関係していると思われます。

生のベンチマーク結果を末尾に添付します。
そのうち大きく差があったものについて、改めて再現性を調べました。

* 速くなったもの、再現性あり
app_pentomino   :  185 -  187 秒 =>  182 -  183 秒
so_fannkuch     :  194 -  195 秒 =>  191 -  192 秒
so_mandelbrot   : 56.1 - 56.3 秒 => 48.2 - 48.3 秒
so_nbody        : 39.2 - 39.5 秒 => 34.4 - 35.0 秒
so_partial_sums : 54.3 - 54.5 秒 => 47.0 - 47.0 秒
so_spectralnorm : 39.4 - 39.6 秒 => 35.4 - 35.5 秒
vm1_block*      : 28.5 - 29.5 秒 => 22.5 - 22.8 秒
vm1_const*      :  6.4 -  6.6 秒 =>  5.5 -  5.5 秒
vm1_not*        :  5.6 -  5.8 秒 =>  4.1 -  4.2 秒
vm3_gc          : 10.4 - 10.5 秒 =>  9.0 -  9.0 秒

* 遅くなったもの、再現性あり
loop_whileloop2       : 17.0 - 17.5 秒 => 18.0 - 18.5 秒
so_ackermann          :  8.6 -  8.7 秒 =>  8.7 -  8.9 秒
so_exception          : 11.8 - 12.2 秒 => 12.8 - 13.4 秒
so_meteor_contest     : 46.4 - 48.8 秒 => 50.4 - 51.2 秒
so_reverse_complement :  388 -  389 秒 =>  391 -  392 秒
vm2_eval*             :  195 -  198 秒 =>  206 -  207 秒

* 生データでは変化があったが、再現性のないもの
app_tak        : パッチ前後ともに 10.5 - 11.2 秒
io_file_read   : パッチ前後ともに   39 -   42 秒
loop_generator : パッチ前後ともに  5.6 -  6.2 秒
loop_times     : パッチ前後ともに 14.1 - 14.5 秒
so_count_words : パッチ前後ともに    2 -    5 秒
so_array       : パッチ前後ともに   13 -   19 秒
so_sieve       : パッチ前後ともに  1.3 -  4.2 秒

benchmark results:
name    ruby 1.9.2dev (2009-12-06 trunk 26029) [i386-mingw32]   ruby
1.9.2dev (2009-12-06 trunk 26029) [i386-mingw32]
app_answer      0.766   0.797
app_erb 4.484   4.422
app_factorial   2.500   2.641
app_fib 7.797   7.984
app_mandelbrot  2.125   2.172
app_pentomino   187.578 183.078
app_raise       5.422   5.438
app_strconcat   3.313   3.172
app_tak 10.547  11.141
app_tarai       9.203   9.313
app_uri 8.828   8.391
io_file_create  33.641  32.641
io_file_read    39.219  42.203
io_file_write   28.719  28.578
loop_for        15.875  15.875
loop_generator  5.719   6.125
loop_times      13.984  14.328
loop_whileloop  8.125   8.156
loop_whileloop2 1.734   1.844
so_ackermann    8.672   8.781
so_array        19.031  13.938
so_binary_trees 3.906   4.016
so_concatenate  3.719   3.813
so_count_words  5.734   6.844
so_exception    12.047  13.203
so_fannkuch     195.047 191.688
so_fasta        25.000  24.891
so_k_nucleotide 16.469  16.797
so_lists        3.453   3.406
so_mandelbrot   56.344  48.313
so_matrix       4.172   4.266
so_meteor_contest       46.438  50.484
so_nbody        39.297  34.922
so_nested_loop  11.859  12.031
so_nsieve       28.922  29.125
so_nsieve_bits  27.938  27.281
so_object       9.063   9.656
so_partial_sums 54.563  47.047
so_pidigits     17.578  17.594
so_random       3.609   3.328
so_reverse_complement   387.969 392.344
so_sieve        2.234   1.531
so_spectralnorm 39.375  35.422
vm1_block*      29.516  22.875
vm1_const*      6.438   5.547
vm1_ensure*     2.344   2.250
vm1_ivar*       7.844   7.547
vm1_ivar_set*   7.031   7.000
vm1_length*     8.797   8.594
vm1_neq*        6.547   6.922
vm1_not*        5.688   4.172
vm1_rescue*     2.328   2.250
vm1_simplereturn*       13.078  12.797
vm1_swap*       4.375   4.328
vm2_array*      15.063  15.016
vm2_case*       1.844   1.656
vm2_eval*       195.141 206.078
vm2_method*     19.266  19.016
vm2_mutex*      12.469  12.422
vm2_poly_method*        24.109  24.188
vm2_poly_method_ov*     2.344   2.328
vm2_proc*       5.859   5.844
vm2_regexp*     9.953   9.438
vm2_send*       3.156   2.891
vm2_super*      4.781   4.641
vm2_unif1*      2.813   2.625
vm2_zsuper*     5.500   5.406
vm3_gc  10.531  9.031
vm3_thread_create_join  27.234  27.828
vm3_thread_mutex        3.000   3.188

-- 
ワナベ