1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
Commit graph

18 commits

Author SHA1 Message Date
John Hawthorn
2f71f6bb82 Speed up and avoid kwarg hash alloc in Time.now
Previously Time.now was switched to use Time.new as it added support for
the in: argument. Unfortunately because Class#new is a cfunc this
requires always allocating a Hash.

This commit switches Time.now back to using a builtin time_s_now. This
avoids the extra Hash allocation and is about 3x faster.

    $ benchmark-driver -e './ruby;3.1::~/.rubies/ruby-3.1.0/bin/ruby;3.0::~/.rubies/ruby-3.0.2/bin/ruby' benchmark/time_now.yml
    Warming up --------------------------------------
                  Time.now     6.704M i/s -      6.710M times in 1.000814s (149.16ns/i, 328clocks/i)
    Time.now(in: "+09:00")     2.003M i/s -      2.112M times in 1.054330s (499.31ns/i)
    Calculating -------------------------------------
                               ./ruby         3.1         3.0
                  Time.now     7.693M      2.763M      6.394M i/s -     20.113M times in 2.614428s 7.278710s 3.145572s
    Time.now(in: "+09:00")     2.030M      1.260M      1.617M i/s -      6.008M times in 2.960132s 4.769378s 3.716537s

    Comparison:
                               Time.now
                    ./ruby:   7693129.7 i/s
                       3.0:   6394109.2 i/s - 1.20x  slower
                       3.1:   2763282.5 i/s - 2.78x  slower

                 Time.now(in: "+09:00")
                    ./ruby:   2029757.4 i/s
                       3.0:   1616652.3 i/s - 1.26x  slower
                       3.1:   1259776.2 i/s - 1.61x  slower
2022-01-12 12:55:14 -08:00
Nobuyoshi Nakada
433a5a0eb0
[DOC] Fix Time.new description [ci skip] 2021-12-03 13:17:38 +09:00
Koichi Sasada
2a3d5d661c Use Primitive.mandatory_only? for Time.at 2021-11-15 15:58:56 +09:00
Benoit Daloze
8d5f38a8a4 Use Primitive. in timev.rb for consistency with all other .rb files 2021-11-10 19:51:59 +01:00
Nobuyoshi Nakada
8bcff5604b
Tentative fix of subsec to Time.at [Bug ] 2021-11-10 18:14:14 +09:00
Nobuyoshi Nakada
83bdc2f00c
Simplify default values of Time.at [Bug ] 2021-11-10 17:42:18 +09:00
Burdette Lamar
94dea77cd6
Links for What's Here sections ()
Makes What's Here sections in Time and Dir link to What's Here for super and included modules (like all the others).
2021-09-13 10:37:15 -05:00
Nobuyoshi Nakada
83244b8c89
[DOC] Match each Time.now for comparison [ci skip] 2021-08-23 14:12:21 +09:00
Nobuyoshi Nakada
c741ea0be7
timev.rb: moved class rdoc from time.c 2021-06-07 20:44:05 +09:00
Nobuyoshi Nakada
30d2d72663
Shrink timev.rb iseq size 2021-05-08 11:40:20 +09:00
Burdette Lamar
86b4c2fc3f
What's Here for class Dir ()
What's Here for class Dir
2021-05-07 15:14:08 -05:00
Burdette Lamar
6ee55455a8 Update Time documentation 2021-04-29 19:58:15 -07:00
Nobuyoshi Nakada
e9b93d67ba
Positional and keyword arguments for timezone are exclusive
[Feature ]
2021-01-13 18:37:36 +09:00
Nobuyoshi Nakada
4b15caee8f
Added in: timezone option to Time.new [Feature ] 2021-01-13 18:15:50 +09:00
Marcus Stollsteimer
3108ad7bf3 [DOC] Fix grammar: "is same as" -> "is the same as" 2021-01-05 15:13:53 +01:00
Nobuyoshi Nakada
77e7082e82
Moved Time.at to builtin 2020-12-31 17:25:07 +09:00
Nobuyoshi Nakada
9101597d05
Moved Time.now to builtin 2020-12-31 17:25:07 +09:00
Nobuyoshi Nakada
93735f8fc0
Moved time.rb to timev.rb 2020-12-31 17:23:37 +09:00
Renamed from time.rb (Browse further)