[#37730] [Ruby 1.9 - Bug #4962][Open] come back gem_prelude! — Yusuke Endoh <mame@...>

24 messages 2011/07/02

[#37840] [Ruby 1.9 - Feature #4985][Open] Add %S[] support for making a list of symbols — Aaron Patterson <aaron@...>

23 messages 2011/07/07

[#37866] [Backport87 - Feature #4996][Open] About 1.8.7 EOL — Shyouhei Urabe <shyouhei@...>

22 messages 2011/07/08

[#37913] [Ruby 1.9 - Bug #5003][Open] Enumerator#next segfaults in OS X Lion (10.7) — Ganesh Gunasegaran <ganesh.gunas@...>

16 messages 2011/07/09

[#37917] [Ruby 1.9 - Feature #5005][Open] Provide convenient access to original methods — Lazaridis Ilias <ilias@...>

13 messages 2011/07/09

[#37932] [Ruby 1.9 - Feature #5008][Open] Equal rights for Hash (like Array, String, Integer, Float) — Suraj Kurapati <sunaku@...>

31 messages 2011/07/09

[#37936] [Ruby 1.9 - Feature #5010][Open] Add Slop(-like) in stdlib and deprecate current OptionParser API — Rodrigo Rosenfeld Rosas <rr.rosas@...>

29 messages 2011/07/09

[#37968] [Ruby 1.9 - Bug #5015][Open] method_added" is called in addition to "method_undefined — Lazaridis Ilias <ilias@...>

14 messages 2011/07/10

[#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@...>

14 messages 2011/07/16

[#38109] [Ruby 1.9 - Bug #5034][Open] C Source Code formatting — Lazaridis Ilias <ilias@...>

18 messages 2011/07/16

[#38171] [Ruby 1.9 - Bug #5047][Open] Segfault (most likely involving require) — Jack Christensen <jack@...>

21 messages 2011/07/18

[#38182] [Ruby 1.9 - Feature #5054][Open] Compress a sequence of ends — ANDO Yasushi ANDO <andyjpn@...>

68 messages 2011/07/19

[#38197] [Ruby 1.9 - Feature #5056][Open] About 1.9 EOL — Shyouhei Urabe <shyouhei@...>

39 messages 2011/07/19
[#38900] [Ruby 1.9 - Feature #5056] About 1.9 EOL — Shota Fukumori <sorah@...> 2011/08/10

[#38902] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Yukihiro Matsumoto <matz@...> 2011/08/10

Hi,

[#39048] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — SASADA Koichi <ko1@...> 2011/08/22

Hi,

[#39055] Re: [Ruby 1.9 - Feature #5056] About 1.9 EOL — Lucas Nussbaum <lucas@...> 2011/08/23

On 23/08/11 at 06:50 +0900, SASADA Koichi wrote:

[#38295] [Ruby 1.9 - Feature #5064][Open] HTTP user-agent class — Eric Hodel <drbrain@...7.net>

15 messages 2011/07/21

[#38391] [Ruby 1.9 - Bug #5076][Open] Mac OS X Lion Support — Yui NARUSE <naruse@...>

17 messages 2011/07/22

[#38503] [Ruby 1.9 - Feature #5096][Open] offer Logger-compatibility for ext — Eric Wong <normalperson@...>

16 messages 2011/07/25

[#38510] [Ruby 1.9 - Feature #5097][Assigned] Supported platforms of Ruby 1.9.3 — Yui NARUSE <naruse@...>

42 messages 2011/07/26

[#38526] [Backport92 - Backport #5099][Open] Backport r31875 load path performance problem — Aaron Patterson <aaron@...>

19 messages 2011/07/26

[#38538] [Ruby 1.9 - Feature #5101][Open] allow optional timeout for TCPSocket.new — Eric Wong <normalperson@...>

15 messages 2011/07/27

[#38610] [Ruby 1.9 - Feature #5120][Open] String#split needs to be logical — Alexey Muranov <muranov@...>

18 messages 2011/07/30

[#38623] [Ruby 1.9 - Feature #5123][Open] Alias Hash 1.9 as OrderedHash — Alexey Muranov <muranov@...>

14 messages 2011/07/31

[ruby-core:37835] Re: [Ruby 1.9 - Bug #4962] come back gem_prelude!

From: Eric Hodel <drbrain@...7.net>
Date: 2011-07-06 22:26:18 UTC
List: ruby-core #37835
On Jul 6, 2011, at 3:02 PM, Benoit Daloze wrote:

> On 6 July 2011 23:21, Eric Hodel <drbrain@segment7.net> wrote:
>> 
>> Please try r32429
> 
> I just tried, and here are some numbers.
> Surprising how such a change can move numbers.
> 
> $ time ruby -e ''
> before: 0.045
> no-gems: 0.013
> after: 0.024
> 
> $ ruby -e 'p ObjectSpace.count_objects[:TOTAL]'
> before: 20033
> no-gems: 9811
> after: 14308

I'm unsure if TOTAL is counting what we think it's counting.  It seems to be showing the size of the object space not the number of allocated objects.  If you add allocated and FREE from the output below you'll get TOTAL.

$ cat diffhash.rb 
gems    = eval `#{Gem.ruby} -e 'GC.start; p ObjectSpace.count_objects' | grep '{'`
no_gems = eval `#{Gem.ruby} --disable-gems -e 'GC.start; p ObjectSpace.count_objects' | grep '{'`

gems[:allocated]    =
  gems.select { |k,_| k.to_s.start_with? 'T_' }.values.inject :+

no_gems[:allocated] =
  no_gems.select { |k,_| k.to_s.start_with? 'T_' }.values.inject :+

puts "               gems  no_gems     diff"

gems.keys.sort.each do |key|
  a = gems[key].to_i
  b = no_gems[key].to_i

  puts "%-10s %8d %8d %8d" % [key, a, b, a - b]
end

$ ./ruby19 diffhash.rb 
               gems  no_gems     diff
FREE           6793     7357     -564
TOTAL         14309     9811     4498
T_ARRAY         226       20      206
T_BIGNUM          3        3        0
T_CLASS         474      425       49
T_COMPLEX         1        1        0
T_DATA          347      117      230
T_FILE            3        3        0
T_FLOAT           7        7        0
T_HASH            7        3        4
T_ICLASS         19       18        1
T_MODULE         21       18        3
T_NODE         3185       27     3158
T_OBJECT          7        6        1
T_REGEXP         24        8       16
T_STRING       3192     1798     1394
allocated      7516     2454     5062

Also, the GC runs once at ruby startup:

$ ruby19 --disable-gems -e 'GC::Profiler.enable; require "rubygems"; puts GC::Profiler.result'
GC 1 invokes.
Index    Invoke Time(sec)       Use Size(byte)     Total Size(byte)         Total Object                    GC Time(ms)
    1               0.009               288200               409000                10225         0.41599999999999970335

Increasing HEAP_MIN_SLOTS to 20000 eliminates the initial garbage collection:

$ RUBY_HEAP_MIN_SLOTS=20000 ruby19 --disable-gems -e 'GC::Profiler.enable; require "rubygems"; puts GC::Profiler.result'
heap_min_slots=20000 (10000)


In This Thread