[#39845] Re: [ruby-cvs:33238] Ruby:r26022 (trunk): * marshal.c (w_object): dump instance variables when using — Tanaka Akira <akr@...>
2009/12/5 <[email protected]>:
3 messages
2009/12/06
[#39846] [Bug #2447] reduce GC pressure by symbol table without String instance — Yusuke Endoh <redmine@...>
Bug #2447: reduce GC pressure by symbol table without String instance
5 messages
2009/12/06
[#39847] stable find.rb — Tanaka Akira <akr@...>
44OH44Kj44Os44Kv44OI44Oq44KS5YaN5biw55qE44Gr44Gf44Gp44Gj44Gf57WQ5p6c44KS5q+U
5 messages
2009/12/06
[#39851] Time.now + str と #to_r — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
9 messages
2009/12/07
[#39852] Re: Time.now + str と #to_r
— "NARUSE, Yui" <naruse@...>
2009/12/07
成瀬です。
[#39855] [RubySpec #2460] RubySpecでFiberのSpecがおちる — 三村 益隆 <redmine@...>
RubySpec #2460: RubySpecでFiberのSpecがおちる
4 messages
2009/12/08
[#39863] [Feature #2471] want to choose a GC algorithm — _ wanabe <redmine@...>
Feature #2471: want to choose a GC algorithm
8 messages
2009/12/09
[#39874] faster Enumerator#each by rb_block_call with current block — Yusuke ENDOH <mame@...>
遠藤です。
7 messages
2009/12/13
[#39894] Re: faster Enumerator#each by rb_block_call with current block
— Yukihiro Matsumoto <matz@...>
2009/12/19
まつもと ゆきひろです
[#39897] Re: faster Enumerator#each by rb_block_call with current block
— Yusuke ENDOH <mame@...>
2009/12/20
遠藤です。
[#39912] [Bug #2522] Segmentation Fault is occurred on r26158 by running rubyspec — Kenta Murata <redmine@...>
Bug #2522: Segmentation Fault is occurred on r26158 by running rubyspec
4 messages
2009/12/23
[ruby-dev:39854] Re: [Bug #2447] reduce GC pressure by symbol table without String instance
From:
wanabe <s.wanabe@...>
Date:
2009-12-08 09:37:15 UTC
List:
ruby-dev #39854
ワナベと申します。 09/12/06 Yusuke Endoh <[email protected]>: > 現在のシンボルテーブルは、シンボルごとに 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 -- ワナベ