From: KOSAKI Motohiro Date: 2011-07-02T23:48:39+09:00 Subject: [ruby-core:37743] Re: [Ruby 1.9 - Bug #4962] come back gem_prelude! Hi 2011/7/2 Luis Lavena : > > Issue #4962 has been updated by Luis Lavena. > > > Yusuke Endoh wrote: >> There are some approaches to address the problem: >> >> � 1. to introduce a generational GC; this is impossible until 2.0 because >> � � �it requires modifications to all extension libraries. >> >> � 2. to diet rubygems; do not create any string, array, hash, and any >> � � �object as much as possible, and do not keep the references to them. >> >> � 3. to restore gem_prelude.rb to delay loading rubygems. >> >> I guess that 3 is a reasonable choice for 1.9.3. �But I'm fine with any >> solution to fix rubygems if 1.9.3 becomes as fast as 1.9.2 on the >> benchmarks. >> > > AFAIK, The issue with gem_prelude in the past has been that it loaded by default the latest version of every gem in $LOAD_PATH, not allowing you at later time decide another version. > > 1.9.3 is in feature freeze, right? I was hoping Eric Hodel's proposal desscribed in [ruby-core:31885] could be implemented. Right. but I think this large degression can be considered blocker. I've compared 192, 192 w/o gem, trunk, trunk w/o gems by following way. /usr/bin/ruby ../benchmark/driver.rb -v --executables="192r31932-nogems::~/ruby/bin/ruby-192-r31932 --disable-gems; 192r321932::~/ruby/bin/ruby-192-r31932; trunk-nogems::~/ruby/bin/ruby-trunk --disable-gems; trunk::~/ruby/bin/ruby-trunk -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext --" --pattern='bm_' --directory=../benchmark -r 5 some bench have big degression. name 192r31932-nogems 192r321932 trunk-nogems trunk ----------------------------------------------------------------------------------------- vm3_gc 1.041 1.072 1.104 2.055 app_factorial 0.988 0.992 0.993 1.170 io_file_read 2.402 2.420 2.392 2.702 so_ackermann 0.907 0.901 0.896 0.952 so_binary_trees 0.475 0.481 0.480 0.546 so_k_nucleotide 1.768 1.838 1.885 1.963 so_pidigits 0.672 0.675 0.676 0.821 And another some benches have minor degression. name 192r31932-nogems 192r321932 trunk-nogems trunk ----------------------------------------------------------------------------------------- app_fib 0.812 0.816 0.792 0.849 app_raise 0.830 0.835 0.808 0.847 app_strconcat 1.703 1.725 1.796 1.862 app_tak 1.131 1.142 1.131 1.157 app_tarai 0.916 0.919 0.921 0.930 app_uri 1.332 1.343 1.383 1.389 io_file_create 3.075 3.088 3.105 3.133 so_array 1.910 1.905 1.856 1.918 so_lists 1.286 1.298 1.290 1.373 so_matrix 1.107 1.101 1.060 1.105 so_reverse_complement 2.016 2.058 2.050 2.119 Briefly says, trunk-nogems is slightly faster than 192-nogems. but trunk is slower than 192.