[#35446] [Ruby 1.9 - Bug #4477][Open] Kernel:exec and backtick (`) don't work for certain system commands — Joachim Wuttke <j.wuttke@...>

10 messages 2011/03/07

[#35476] [Ruby 1.9 - Bug #4489][Open] [PATCH] Encodings with /-(unix|dos|mac)\Z/ — "James M. Lawrence" <quixoticsycophant@...>

20 messages 2011/03/10

[#35552] [Ruby 1.9 - Feature #4523][Open] Kernel#require to return the path of the loaded file — Alex Young <alex@...>

14 messages 2011/03/24

[#35565] [Ruby 1.9 - Feature #4531][Open] [PATCH 0/7] use poll() instead of select() in certain cases — Eric Wong <normalperson@...>

33 messages 2011/03/28

[#35566] [Ruby 1.9 - Feature #4532][Open] [PATCH] add IO#pread and IO#pwrite methods — Eric Wong <normalperson@...>

12 messages 2011/03/28

[#35586] [Ruby 1.9 - Feature #4538][Open] [PATCH (cleanup)] avoid unnecessary select() calls before doing I/O — Eric Wong <normalperson@...>

9 messages 2011/03/29

[ruby-core:35412] [Ruby 1.9 - Feature #4452] [Rejected] Speedup Date._parse and Date._strptime by using a plain Hash

From: tadayoshi funaba <redmine@...>
Date: 2011-03-02 11:29:44 UTC
List: ruby-core #35412
Issue #4452 has been updated by tadayoshi funaba.

Status changed from Open to Rejected

now i'm planning some improvements for formating method of date.
i may rewrite some methods in c.

thanks.
----------------------------------------
Feature #4452: Speedup Date._parse and Date._strptime by using a plain Hash
http://redmine.ruby-lang.org/issues/4452

Author: Jeremy Evans
Status: Rejected
Priority: Normal
Assignee: tadayoshi funaba
Category: 
Target version: 


This is pretty much a duplicate of #3667, but since you can't reopen tickets and I didn't get a response to the question I posted after it was closed, I'm resubmitting it.

Date._parse and Date._strptime currently use a Date::Format::Bag instance to hold some temporary data.  This is a subclass of Date::Format::BagStruct which is a subclass of Struct.  There are no other users of this class and it is a private (nodoc) class.  It is much faster to switch the code to use a plain hash instead of Date::Format::Bag, 66% faster for Date._parse and 25% faster for Date._strptime:

    $ ruby -v
    ruby 1.9.3dev (2011-02-28 trunk 30975) [x86_64-openbsd4.9]

    $ time ruby -r date -I date-struct -e "50000.times{Date._parse('2010-12-25')}"

    real    0m3.673s
    user    0m3.660s
    sys     0m0.010s

    $ time ruby -r date -I date-hash -e "50000.times{Date._parse('2010-12-25')}"

    real    0m2.219s
    user    0m2.200s
    sys     0m0.020s

    $ time ruby -r date -I date-struct -e "50000.times{Date._strptime('2010-12-25 10:20:30', '%F %T')}"

    real    0m8.715s
    user    0m8.710s
    sys     0m0.000s

    $ time ruby -r date -I date-hash -e "50000.times{Date._strptime('2010-12-25 10:20:30', '%F %T')}"

    real    0m6.980s
    user    0m6.970s
    sys     0m0.000s

    > 3.673/2.219
     => 1.655250112663362
    > 8.715/6.980
     => 1.248567335243553

The only advantage to the current code is that you can use nicer looking accessor methods:

    e.d     # instead of e[:d]
    e.d = 1 # instead of e[:d] = 1

However, in this case the performance increase greatly outweighs that issue.


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

In This Thread

Prev Next