[#33640] [Ruby 1.9-Bug#4136][Open] Enumerable#reject should not inherit the receiver's instance variables — Hiro Asari <redmine@...>

Bug #4136: Enumerable#reject should not inherit the receiver's instance variables

10 messages 2010/12/08

[#33667] [Ruby 1.9-Bug#4149][Open] Documentation submission: syslog standard library — mathew murphy <redmine@...>

Bug #4149: Documentation submission: syslog standard library

11 messages 2010/12/10

[#33683] [feature:trunk] Enumerable#categorize — Tanaka Akira <akr@...>

Hi.

14 messages 2010/12/12
[#33684] Re: [feature:trunk] Enumerable#categorize — "Martin J. Dst" <duerst@...> 2010/12/12

[#33687] Towards a standardized AST for Ruby code — Magnus Holm <judofyr@...>

Hey folks,

23 messages 2010/12/12
[#33688] Re: Towards a standardized AST for Ruby code — Charles Oliver Nutter <headius@...> 2010/12/12

On Sun, Dec 12, 2010 at 9:55 AM, Magnus Holm <judofyr@gmail.com> wrote:

[#33689] Re: Towards a standardized AST for Ruby code — "Haase, Konstantin" <Konstantin.Haase@...> 2010/12/12

On Dec 12, 2010, at 17:46 , Charles Oliver Nutter wrote:

[#33763] [Ruby 1.9-Bug#4168][Open] WeakRef is unsafe to use in Ruby 1.9 — Brian Durand <redmine@...>

Bug #4168: WeakRef is unsafe to use in Ruby 1.9

43 messages 2010/12/17

[#33815] trunk warnflags build issue with curb 0.7.9? — Jon <jon.forums@...>

As this may turn out to be a 3rd party issue rather than a bug, I'd like some feedback.

11 messages 2010/12/22

[#33833] Ruby 1.9.2 is going to be released — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

15 messages 2010/12/23

[#33846] [Ruby 1.9-Feature#4197][Open] Improvement of the benchmark library — Benoit Daloze <redmine@...>

Feature #4197: Improvement of the benchmark library

15 messages 2010/12/23

[#33910] [Ruby 1.9-Feature#4211][Open] Converting the Ruby and C API documentation to YARD syntax — Loren Segal <redmine@...>

Feature #4211: Converting the Ruby and C API documentation to YARD syntax

10 messages 2010/12/26

[#33923] [Ruby 1.9-Bug#4214][Open] Fiddle::WINDOWS == false on Windows — Jon Forums <redmine@...>

Bug #4214: Fiddle::WINDOWS == false on Windows

15 messages 2010/12/27

[ruby-core:33809] [Ruby 1.9-Feature#4184] String that has the same object_id in an each occurrence in a code

From: Kurt Stephens <redmine@...>
Date: 2010-12-22 01:22:45 UTC
List: ruby-core #33809
Issue #4184 has been updated by Kurt  Stephens.



The cost of GC increases with the number of allocated and referenced objects.  The copy-on-write internal String buffers reduces the needless copying of the String buffers, if they are likely to be dup'ed and not mutated, but does not improve collection times.

  FOO = 'foobar'.freeze
  def foo
    FOO.sub('bar', 'baz')
  end

performs much better than:

  def foo
    'foobar'.sub('bar', 'baz')
  end

because FOO.object_id always == FOO.object_id, where as 'foobar'.object_id != 'foobar'.object_id.  'foobar' immediately becomes unreachable after String#sub; it's allocation is pointless.  Every lexical String "constant" allocates a new object.

The same is true for ARRAY = [ :foo, :bar ].freeze .vs. inline [ :foo, :bar ].  

I've been able to get 2-3% improvements in Rails apps by simply rewriting some 'constant's and inline Arrays as CONSTANTs.

I have patches to MRI that use cached, immutable Strings for the internal #to_s messages on immutable objects; e.g. changing Symbol#to_s, Float#to_s, Bignum#to_s, Rational#to_s, etc. to return the same frozen String instance.  I measured 1-6% performance improvement in the standard MRI tests.

The cost of stop-the-world, mark/sweep GC is not in the allocation, it's in collection.  Allocating fewer objects improves both phases.

A generic, thread-safe, "memoize expression" lexical syntax would very useful.  Maybe something like %m('foo') or %m([ :foo, :bar ]) and %M('foo') for the %m('foo'.freeze) variant.



----------------------------------------
http://redmine.ruby-lang.org/issues/show/4184

----------------------------------------
http://redmine.ruby-lang.org

In This Thread