Skip to content
  • 卜部昌平's avatar
    d45a013a
    extend rb_call_cache · d45a013a
    卜部昌平 authored
    Prior to this changeset, majority of inline cache mishits resulted
    into the same method entry when rb_callable_method_entry() resolves
    a method search.  Let's not call the function at the first place on
    such situations.
    
    In doing so we extend the struct rb_call_cache from 44 bytes (in
    case of 64 bit machine) to 64 bytes, and fill the gap with
    secondary class serial(s).  Call cache's class serials now behavies
    as a LRU cache.
    
    Calculating -------------------------------------
                               ours         2.7         2.6
    vm2_poly_same_method     2.339M      1.744M      1.369M i/s - 6.000M times in 2.565086s 3.441329s 4.381386s
    
    Comparison:
                 vm2_poly_same_method
                    ours:   2339103.0 i/s
                     2.7:   1743512.3 i/s - 1.34x  slower
                     2.6:   1369429.8 i/s - 1.71x  slower
    d45a013a
    extend rb_call_cache
    卜部昌平 authored
    Prior to this changeset, majority of inline cache mishits resulted
    into the same method entry when rb_callable_method_entry() resolves
    a method search.  Let's not call the function at the first place on
    such situations.
    
    In doing so we extend the struct rb_call_cache from 44 bytes (in
    case of 64 bit machine) to 64 bytes, and fill the gap with
    secondary class serial(s).  Call cache's class serials now behavies
    as a LRU cache.
    
    Calculating -------------------------------------
                               ours         2.7         2.6
    vm2_poly_same_method     2.339M      1.744M      1.369M i/s - 6.000M times in 2.565086s 3.441329s 4.381386s
    
    Comparison:
                 vm2_poly_same_method
                    ours:   2339103.0 i/s
                     2.7:   1743512.3 i/s - 1.34x  slower
                     2.6:   1369429.8 i/s - 1.71x  slower
Loading