Skip to content
  • Ryuta Kamizono's avatar
    3944fb74
    Avoid to use slower `define_method` for `AcceptsMultiparameterTime` · 3944fb74
    Ryuta Kamizono authored
    This makes `datetime.serialize` about 10% faster.
    
    ```ruby
    type = ActiveRecord::Type.lookup(:datetime)
    time = Time.now.utc
    
    Benchmark.ips do |x|
      x.report("type.serialize(time)") do
        type.serialize(time)
        type.serialize(time)
        type.serialize(time)
        type.serialize(time)
      end
    end
    ```
    
    Before:
    
    ```
    Warming up --------------------------------------
    type.serialize(time)    12.899k i/100ms
    Calculating -------------------------------------
    type.serialize(time)    131.293k (± 1.6%) i/s -    657.849k in   5.011870s
    ```
    
    After:
    
    ```
    Warming up --------------------------------------
    type.serialize(time)    14.603k i/100ms
    Calculating -------------------------------------
    type.serialize(time)    145.941k (± 1.1%) i/s -    730.150k in   5.003639s
    ```
    3944fb74
    Avoid to use slower `define_method` for `AcceptsMultiparameterTime`
    Ryuta Kamizono authored
    This makes `datetime.serialize` about 10% faster.
    
    ```ruby
    type = ActiveRecord::Type.lookup(:datetime)
    time = Time.now.utc
    
    Benchmark.ips do |x|
      x.report("type.serialize(time)") do
        type.serialize(time)
        type.serialize(time)
        type.serialize(time)
        type.serialize(time)
      end
    end
    ```
    
    Before:
    
    ```
    Warming up --------------------------------------
    type.serialize(time)    12.899k i/100ms
    Calculating -------------------------------------
    type.serialize(time)    131.293k (± 1.6%) i/s -    657.849k in   5.011870s
    ```
    
    After:
    
    ```
    Warming up --------------------------------------
    type.serialize(time)    14.603k i/100ms
    Calculating -------------------------------------
    type.serialize(time)    145.941k (± 1.1%) i/s -    730.150k in   5.003639s
    ```
Loading