[#31647] [Backport #3666] Backport of r26311 (Bug #2587) — Luis Lavena <redmine@...>

Backport #3666: Backport of r26311 (Bug #2587)

13 messages 2010/08/07

[#31666] [Bug #3677] unable to run certain gem binaries' in windows 7 — Roger Pack <redmine@...>

Bug #3677: unable to run certain gem binaries' in windows 7

10 messages 2010/08/10

[#31676] [Backport #3680] Splatting calls to_ary instead of to_a in some cases — Tomas Matousek <redmine@...>

Backport #3680: Splatting calls to_ary instead of to_a in some cases

10 messages 2010/08/11

[#31681] [Bug #3683] getgrnam on computer with NIS group (+)? — Rocky Bernstein <redmine@...>

Bug #3683: getgrnam on computer with NIS group (+)?

13 messages 2010/08/11

[#31843] Garbage Collection Question — Asher <asher@...>

This question is no doubt a function of my own lack of understanding, but I think that asking it will at least help some other folks see what's going on with the internals during garbage collection.

17 messages 2010/08/25
[#31861] Re: Garbage Collection Question — Roger Pack <rogerdpack2@...> 2010/08/26

> The question in short: when an object goes out of scope and has no

[#31862] Re: Garbage Collection Question — Asher <asher@...> 2010/08/26

Right - so how does a pointer ever get off the stack?

[#31873] Re: Garbage Collection Question — Kurt Stephens <ks@...> 2010/08/27

On 8/26/10 11:51 AM, Asher wrote:

[#31894] Re: Garbage Collection Question — Asher <asher@...> 2010/08/27

I very much appreciate the response, and this is helpful in describing the narrative, but it's still a few steps behind my question - but it may very well have clarified some points that help us get there.

[#31896] Re: Garbage Collection Question — Evan Phoenix <evan@...> 2010/08/27

You have introduced something called a "root node" without defining it. What do you mean by this?

[#31885] Avoiding $LOAD_PATH pollution — Eric Hodel <drbrain@...7.net>

Last year Nobu asked me to propose an API for adding an object to

21 messages 2010/08/27

[#31947] not use system for default encoding — Roger Pack <rogerdpack2@...>

It strikes me as a bit "scary" to use system locale settings to

19 messages 2010/08/30

[#31971] Change Ruby's License to BSDL + Ruby's dual license — "NARUSE, Yui" <naruse@...>

Ruby's License will change to BSDL + Ruby's dual license

16 messages 2010/08/31

[ruby-core:31649] [Feature #3667] Speedup Date._parse and Date._strptime by using a Hash instead of a Date::Format::Bag

From: Jeremy Evans <redmine@...>
Date: 2010-08-08 01:41:04 UTC
List: ruby-core #31649
Feature #3667: Speedup Date._parse and Date._strptime by using a Hash instead of a Date::Format::Bag
http://redmine.ruby-lang.org/issues/show/3667

Author: Jeremy Evans
Status: Open, Priority: Normal
Category: lib

In date/format.rb, the Date::Format::Bag helper class is used to get a slightly nicer internal API, but it has a significant performance cost.  This patch is a fairly mechanical change to using a plain Hash instead of a Date::Format::Bag (which it removes).  For the following test code, I'm getting a 53% performance increase for Date._parse and a 24% increase for Date_.strptime.

$ ruby -v
ruby 1.9.2dev (2010-07-11 revision 28618) [x86_64-openbsd4.7]

Date._parse
-----------

$ cat date_parse.rb 
require 'date'
m = Date.method(:_parse)
d = '2010-10-20 18:43:46+08:00'
10000.times{m.call(d)}

$ time ruby date_parse.rb 

real    0m1.217s
user    0m1.130s
sys     0m0.050s

$ time ruby -I date2 date_parse.rb                                                                                                                                                     

real    0m0.793s
user    0m0.760s
sys     0m0.030s


Date._strptime:

$ cat date_strptime.rb 
require 'date'
m = Date.method(:_strptime)
d = '2010-10-20 18:43:46+08:00'
s = '%Y-%m-%d %H:%M:%S%z'
10000.times{m.call(d, s)}

$ time ruby date_strptime.rb 

real    0m1.984s
user    0m1.980s
sys     0m0.000s

$ time ruby -I date2 date_strptime.rb 

real    0m1.595s
user    0m1.550s
sys     0m0.040s

This patch should operate identically to the current version except that it may include keys with nil values in the returned hashes (I'm not sure that it does, but there is no check against it).  If that isn't acceptable, there's two options.  There could be a Hash#delete_if call to remove things with nil values (easier, probably worse performance), or the internal code to be modified to never assign nil values to the hash (possibly slightly more work, probably better performance).  In either case I'd be happy to do the work.


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

In This Thread

Prev Next