[#37708] [Ruby 1.9 - Bug #4956][Open] [PATCH] string.c (tr_s_bang): fix leak with heap strings — Eric Wong <normalperson@...>
Eric Wong <[email protected]> wrote:
On Wed, Jul 06, 2011 at 04:46:44AM +0900, Eric Wong wrote:
[#37714] test fail test/matrix/test_matrix.rb:321 — KOSAKI Motohiro <kosaki.motohiro@...>
http://59.106.172.211/~chkbuild/ruby-trunk/log/20110701T110101Z.log.html.gz
2011/7/1 KOSAKI Motohiro <[email protected]>:
Test fixed, thanks (indeed, Matrix#** now implements non integer exponents)=
2011/7/2 Marc-Andre Lafortune <[email protected]>:
[#37724] open-ssl related errors on MacOSX — SASADA Koichi <ko1@...>
Hi,
2011/7/2 SASADA Koichi <[email protected]>:
2011/7/2 Martin Bo=DFlet <[email protected]>:
[#37730] [Ruby 1.9 - Bug #4962][Open] come back gem_prelude! — Yusuke Endoh <mame@...>
On Sat, Jul 02, 2011 at 02:18:35PM +0900, Yusuke Endoh wrote:
[#37757] [Ruby 1.9 - Bug #4969][Open] Subtle issue with require — Thomas Sawyer <transfire@...>
[#37761] [Ruby 1.9 - Feature #4970][Open] FileUtils refactored — Thomas Sawyer <transfire@...>
[#37805] [Ruby 1.8 - Bug #4979][Open] `require 'foo'` is ambiguous when there is both foo.rb and foo.so — Antonio Terceiro <terceiro@...>
[#37840] [Ruby 1.9 - Feature #4985][Open] Add %S[] support for making a list of symbols — Aaron Patterson <aaron@...>
I guessed that %S(...) is S-expr syntax.
[#37853] [Ruby 1.9 - Bug #4989][Open] Document Socket constants — Eric Hodel <[email protected]>
Why change all the statuses to low here? I don't see the validity of
Hi
On Fri, Jul 8, 2011 at 08:25, KOSAKI Motohiro <[email protected]> wrote:
[#37858] [Ruby 1.9 - Bug #4992][Open] finalizer中のThread.newでSEGV — Shota Fukumori <sorah@...>
> -- Thread.new in finalizer raises SEGV
[#37866] [Backport87 - Feature #4996][Open] About 1.8.7 EOL — Shyouhei Urabe <shyouhei@...>
[#37908] [Ruby 1.9 - Bug #5002][Open] Ripper fails to distinguish local vars from vcalls [PATCH] — Michael Edgar <michael.j.edgar@...>
[#37913] [Ruby 1.9 - Bug #5003][Open] Enumerator#next segfaults in OS X Lion (10.7) — Ganesh Gunasegaran <ganesh.gunas@...>
[#37917] [Ruby 1.9 - Feature #5005][Open] Provide convenient access to original methods — Lazaridis Ilias <ilias@...>
[#37932] [Ruby 1.9 - Feature #5008][Open] Equal rights for Hash (like Array, String, Integer, Float) — Suraj Kurapati <sunaku@...>
On Thu, Mar 29, 2012 at 13:25, rosenfeld (Rodrigo Rosenfeld Rosas) <
[#37936] [Ruby 1.9 - Feature #5010][Open] Add Slop(-like) in stdlib and deprecate current OptionParser API — Rodrigo Rosenfeld Rosas <rr.rosas@...>
Hi,
Em 09-07-2011 20:13, Nobuyoshi Nakada escreveu:
[#37985] [Ruby 1.9 - Bug #2616] unable to trap in doze — Motohiro KOSAKI <kosaki.motohiro@...>
[#37988] [Ruby 1.9 - Feature #5016][Open] Kernel#caller with negative limit should limit result to N initial frames — Nikolai Weibull <now@...>
[#37997] psych and libyaml v0.1.4 testing? — Jon <jon.forums@...>
Anyone run into issues with psych and the latest libyaml patchlevel?
[#38011] [Ruby 1.9 - Bug #5018][Open] ruby_1_9_3 branch is missing from official GitHub mirror — Luis Lavena <luislavena@...>
[#38096] [Ruby 1.9 - Feature #5033][Open] PATCH: 1.9: gc_mark_children: Avoid gc_mark() tail recursion, use goto again. — Kurt Stephens <ks.ruby@...>
[#38109] [Ruby 1.9 - Bug #5034][Open] C Source Code formatting — Lazaridis Ilias <ilias@...>
[#38137] [Ruby 1.9 - Bug #5038][Open] Ruby 1.9.2 stops on some Regular Expressions — Bob Ambartsumov <bob@...>
[#38140] [Ruby 1.9 - Feature #5041][Open] Set FD_CLOEXEC for all fds (except 0, 1, 2) — Akira Tanaka <akr@...>
[#38158] Proposal to merge net2-http for Ruby 1.9.4 — Yehuda Katz <wycats@...>
I gave a talk at Ruby Kaigi about my work on Net::HTTP (
2011/7/18 Yehuda Katz <[email protected]>:
Yehuda Katz
[#38164] [Ruby 1.9 - Bug #5046][Open] Bug with xmlrpc::client, basic auth and long authentication strings — Herwin Weststrate <herwin@...>
[#38171] [Ruby 1.9 - Bug #5047][Open] Segfault (most likely involving require) — Jack Christensen <jack@...>
Hiroshi Nakamura <[email protected]> wrote:
On Jul 22, 2011, at 2:41 PM, Eric Wong wrote:
Thank you for the trying the patch.
[#38172] [Backport87 - Backport #5048][Open] Make failed on tk bindings under OSX Lion fresh install — "Wayne E. Seguin" <wayneeseguin@...>
[#38182] [Ruby 1.9 - Feature #5054][Open] Compress a sequence of ends — ANDO Yasushi ANDO <andyjpn@...>
[#38197] [Ruby 1.9 - Feature #5056][Open] About 1.9 EOL — Shyouhei Urabe <shyouhei@...>
Hello,
Hi,
Hi,
On 23/08/11 at 06:50 +0900, SASADA Koichi wrote:
(2011/08/23 20:09), Lucas Nussbaum wrote:
On 23/08/11 at 20:20 +0900, NARUSE, Yui wrote:
[#38295] [Ruby 1.9 - Feature #5064][Open] HTTP user-agent class — Eric Hodel <[email protected]>
[#38343] [Ruby 1.9 - Bug #5068][Open] Issue with "duplicated when clause is ignored" — Stefano Mioli <stefano.mioli@...>
[#38367] [Ruby 1.9 - Feature #5072][Open] Avoid inadvertent symbol creation in reflection methods — Jeremy Evans <merch-redmine@...>
[#38378] [Ruby 1.9 - Bug #5073][Open] error building ruby p290 — Rajinder Yadav <devguy.ca@...>
[#38391] [Ruby 1.9 - Bug #5076][Open] Mac OS X Lion Support — Yui NARUSE <naruse@...>
[#38451] [Ruby 1.9 - Bug #5090][Open] Segfault using Enumerator — Robert Syme <rob.syme@...>
[#38464] [Ruby 1.9 - Bug #5091][Open] Can't require './.testrb' — Thomas Sawyer <transfire@...>
[#38491] 1.9.3 Status Update? — Joshua Ballanco <jballanc@...>
Hello ruby-core,
[#38510] [Ruby 1.9 - Feature #5097][Assigned] Supported platforms of Ruby 1.9.3 — Yui NARUSE <naruse@...>
Yui NARUSE <[email protected]> wrote:
On Mon, Jul 25, 2011 at 11:52 PM, Yui NARUSE <[email protected]> wrote:
[#38538] [Ruby 1.9 - Feature #5101][Open] allow optional timeout for TCPSocket.new — Eric Wong <normalperson@...>
2011/7/27 Eric Wong <[email protected]>:
Tanaka Akira <[email protected]> wrote:
2011/7/29 Eric Wong <[email protected]>:
2011/7/30 Tanaka Akira <[email protected]>:
[#38610] [Ruby 1.9 - Feature #5120][Open] String#split needs to be logical — Alexey Muranov <muranov@...>
[ruby-core:37911] [Ruby 1.9 - Bug #4962] come back gem_prelude!
Issue #4962 has been updated by Motohiro KOSAKI.
And, here is laster benchmark comparision on Linux Fedora15 x86-64.
You have to ignore vm_thead_xx and vm3_clearmethodcache. They are influenced another changes.
And only followint three have significant difference.
name 192r31932-nogems 192r31932 trunk-nogems trunk
app_mandelbrot 3.240 3.274 3.398 4.125
io_file_read 6.756 7.214 7.685 8.123
vm3_gc 2.084 2.167 2.259 3.296
Do anyone have more improvement idea?
Cheeers.
<mesurement way>
% /usr/bin/ruby ../benchmark/driver.rb -v --executables="192r31932-nogems::~/ruby/bin/ruby-192-r31932 --disable-gems; 192r31932::~/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
<result>
Elapesed time: 39930.060974 (sec)
-----------------------------------------------------------
benchmark results:
minimum results in each 5 measurements.
name 192r31932-nogems 192r31932 trunk-nogems trunk
app_answer 0.157 0.154 0.156 0.195
app_erb 2.475 2.484 2.517 2.652
app_factorial 2.558 2.591 2.482 2.737
app_fib 1.833 1.845 1.777 1.906
app_mandelbrot 3.240 3.274 3.398 4.125
app_pentomino 32.655 32.803 33.764 34.966
app_raise 1.146 1.148 1.081 1.189
app_strconcat 2.734 2.808 2.821 2.832
app_tak 2.791 2.787 2.714 2.770
app_tarai 2.153 2.145 2.170 2.225
app_uri 1.633 1.628 1.654 1.767
io_file_create 2.514 2.482 2.035 2.214
io_file_read 6.756 7.214 7.685 8.123
io_file_write 2.206 2.152 2.161 2.254
io_select 2.253 2.283 2.550 2.619
io_select2 6.379 6.478 7.192 6.084
io_select3 0.871 0.847 0.887 0.937
loop_for 3.003 3.036 2.863 2.905
loop_generator 1.031 1.073 0.889 0.945
loop_times 2.606 2.593 2.636 2.753
loop_whileloop 1.608 1.606 1.534 1.265
loop_whileloop2 0.347 0.334 0.335 0.321
so_ackermann 2.034 2.008 2.023 2.062
so_array 2.369 2.375 2.884 2.935
so_binary_trees 0.889 0.913 0.932 0.995
so_concatenate 7.358 7.322 7.271 7.310
so_count_words 0.534 0.535 0.515 0.585
so_exception 2.150 2.172 2.022 2.245
so_fannkuch 2.821 2.809 2.793 3.147
so_fasta 4.160 4.225 4.446 4.784
so_k_nucleotide 3.341 3.400 3.232 3.313
so_lists 1.651 1.675 1.661 1.717
so_mandelbrot 11.325 11.690 11.764 11.530
so_matrix 1.530 1.526 1.542 1.592
so_meteor_contest 9.493 8.700 8.517 9.820
so_nbody 8.184 8.339 8.191 7.797
so_nested_loop 2.527 2.447 2.443 2.491
so_nsieve 7.351 7.252 8.503 8.516
so_nsieve_bits 4.920 4.945 4.896 4.973
so_object 1.779 1.781 1.752 1.750
so_partial_sums 10.433 10.625 10.520 10.269
so_pidigits 1.710 1.750 1.811 1.986
so_random 1.834 1.899 1.958 1.863
so_reverse_complement 3.198 3.351 3.542 3.615
so_sieve 2.141 2.161 2.439 2.489
so_spectralnorm 7.887 8.088 7.805 7.412
vm1_block* 3.863 3.462 3.850 3.953
vm1_const* 0.821 0.860 1.107 0.668
vm1_ensure* 0.951 1.012 1.197 0.973
vm1_ivar* 1.238 1.232 0.879 0.878
vm1_ivar_set* 1.824 1.286 1.126 1.201
vm1_length* 1.389 1.329 1.403 1.260
vm1_neq* 0.921 0.902 1.114 0.831
vm1_not* 0.297 0.315 0.407 0.514
vm1_rescue* 0.140 0.124 0.361 0.134
vm1_simplereturn* 2.389 2.409 2.992 2.523
vm1_swap* 2.000 2.011 2.081 1.033
vm2_array* 1.421 1.463 1.443 1.910
vm2_case* 0.314 0.331 0.322 0.297
vm2_defined_method* 6.192 6.221 6.884 6.565
vm2_eval* 29.320 29.618 30.998 38.323
vm2_method* 3.458 3.479 3.610 3.790
vm2_mutex* 1.748 1.776 2.010 1.905
vm2_poly_method* 5.353 5.345 5.992 5.731
vm2_poly_method_ov* 0.546 0.554 0.530 0.472
vm2_proc* 0.913 0.930 0.984 0.994
vm2_regexp* 2.351 2.379 2.412 2.398
vm2_send* 0.554 0.595 0.500 0.552
vm2_super* 1.119 1.145 1.328 1.244
vm2_unif1* 0.566 0.587 0.599 0.580
vm2_zsuper* 1.242 1.290 1.476 1.385
vm3_clearmethodcache 4.762 4.992 0.822 1.008
vm3_gc 2.084 2.167 2.259 3.296
vm_thread_alive_check1 0.346 0.356 0.436 0.516
vm_thread_create_join 5.791 5.737 5.932 5.915
vm_thread_mutex1 1.568 1.587 1.642 1.700
vm_thread_mutex2 1.596 1.616 5.558 2.638
vm_thread_mutex3 3131.381 1335.436 4.009 4.089
vm_thread_pass 0.130 0.137 1.687 1.862
vm_thread_pass_flood 0.356 0.311 0.705 0.847
vm_thread_pipe 1.154 1.133 2.515 2.459
----------------------------------------
Bug #4962: come back gem_prelude!
http://redmine.ruby-lang.org/issues/4962
Author: Yusuke Endoh
Status: Assigned
Priority: Normal
Assignee: Nobuyoshi Nakada
Category: lib
Target version: 1.9.3
ruby -v: -
Hello, rubygems developers
Kosaki-san noticed that 1.9.3 is slower than 1.9.2 on many benchmarks.
http://www.atdot.net/sp/view/5qunnl
I investigated and found that the cause is the lack of gem_prelude.rb.
Loading rubygems seems to create many objects and keep the references
to them. See below:
$ ruby -ve 'GC.start; p ObjectSpace.count_objects[:TOTAL]'
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
9821
$ ./ruby -ve 'GC.start; p ObjectSpace.count_objects[:TOTAL]'
ruby 1.9.3dev (2011-07-01 trunk 32356) [i686-linux]
19638
$ ./ruby --disable-gems -ve 'GC.start; p ObjectSpace.count_objects[:TOTAL]'
ruby 1.9.3dev (2011-07-01 trunk 32356) [i686-linux]
9821
The number of live objects is proportional to the cost of GC mark phase.
You can actually confirm the performance degradation with the following
benchmark script:
require 'tempfile'
max = 200_000
str = "Hello world! " * 1000
f = Tempfile.new('yarv-benchmark')
f.write str
GC::Profiler.enable
max.times{
f.seek 0
f.read
}
p GC::Profiler.total_time
$ time ruby -v bm_io_file_read.rb
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
0.7280460000000308
real 0m3.965s
user 0m2.940s
sys 0m1.024s
$ time ./ruby -v bm_io_file_read.rb
ruby 1.9.3dev (2011-07-01 trunk 32356) [i686-linux]
1.396088000000029
real 0m4.786s
user 0m3.716s
sys 0m1.060s
$ time ./ruby --disable-gems -v bm_io_file_read.rb
ruby 1.9.3dev (2011-07-01 trunk 32356) [i686-linux]
0.7640390000000309
real 0m4.079s
user 0m2.872s
sys 0m1.192s
The performance degradation can be seen by not only such micro benckmarks,
but also my puzzle solvers :-(
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.
--
Yusuke Endoh <[email protected]>
--
http://redmine.ruby-lang.org