• R
    PERF: Avoid extra delegation to `LazyAttributeHash` · 0adcec49
    Ryuta Kamizono 提交于
    The extra delegation to `LazyAttributeHash` has non-negligible overhead.
    
    Avoiding that delegation makes attributes access about 45% faster for
    readonly (non-mutation) usage.
    
    https://gist.github.com/kamipo/4002c96a02859d8fe6503e26d7be4ad8
    
    Before:
    
    ```
    IPS
    Warming up --------------------------------------
        attribute access     1.000  i/100ms
    Calculating -------------------------------------
        attribute access      3.444  (± 0.0%) i/s -     18.000  in   5.259030s
    MEMORY
    Calculating -------------------------------------
        attribute access    38.902M memsize (     0.000  retained)
                           350.044k objects (     0.000  retained)
                            15.000  strings (     0.000  retained)
    ```
    
    After (with `immutable_strings_by_default = true`):
    
    ```
    IPS
    Warming up --------------------------------------
        attribute access     1.000  i/100ms
    Calculating -------------------------------------
        attribute access      5.066  (±19.7%) i/s -     25.000  in   5.024650s
    MEMORY
    Calculating -------------------------------------
        attribute access    27.382M memsize (     0.000  retained)
                           160.044k objects (     0.000  retained)
                            15.000  strings (     0.000  retained)
    ```
    0adcec49
builder.rb 5.1 KB