Skip to content
  • Eric Wong's avatar
    f6cd5825
    variable.c: avoid compatibility table with generic ivars · f6cd5825
    Eric Wong authored
    This recovers and improves performance of Marshal.dump/load on
    Time objects compared to when we implemented generic ivars
    entirely using st_table.
    
    This also recovers some performance on other generic ivar objects,
    but does not bring bring Marshal.dump/load performance up to
    previous speeds.
    
    benchmark results:
    minimum results in each 10 measurements.
    Execution time (sec)
    		name    trunk   geniv   after
    marshal_dump_flo        0.343   0.334   0.335
    marshal_dump_load_geniv 0.487   0.527   0.495
    marshal_dump_load_time  1.262   1.401   1.257
    
    Speedup ratio: compare with the result of `trunk' (greater is better)
    		name    geniv   after
    marshal_dump_flo        1.026   1.023
    marshal_dump_load_geniv 0.925   0.985
    marshal_dump_load_time  0.901   1.004
    
    * include/ruby/intern.h (rb_generic_ivar_table): deprecate
    * internal.h (rb_attr_delete): declare
    * marshal.c (has_ivars): use rb_ivar_foreach
      (w_ivar): ditto
      (w_object): update for new interface
    * time.c (time_mload): use rb_attr_delete
    * variable.c (generic_ivar_delete): implement
      (rb_ivar_delete): ditto
      (rb_attr_delete): ditto
      [ruby-core:69323] [Feature #11170]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    f6cd5825
    variable.c: avoid compatibility table with generic ivars
    Eric Wong authored
    This recovers and improves performance of Marshal.dump/load on
    Time objects compared to when we implemented generic ivars
    entirely using st_table.
    
    This also recovers some performance on other generic ivar objects,
    but does not bring bring Marshal.dump/load performance up to
    previous speeds.
    
    benchmark results:
    minimum results in each 10 measurements.
    Execution time (sec)
    		name    trunk   geniv   after
    marshal_dump_flo        0.343   0.334   0.335
    marshal_dump_load_geniv 0.487   0.527   0.495
    marshal_dump_load_time  1.262   1.401   1.257
    
    Speedup ratio: compare with the result of `trunk' (greater is better)
    		name    geniv   after
    marshal_dump_flo        1.026   1.023
    marshal_dump_load_geniv 0.925   0.985
    marshal_dump_load_time  0.901   1.004
    
    * include/ruby/intern.h (rb_generic_ivar_table): deprecate
    * internal.h (rb_attr_delete): declare
    * marshal.c (has_ivars): use rb_ivar_foreach
      (w_ivar): ditto
      (w_object): update for new interface
    * time.c (time_mload): use rb_attr_delete
    * variable.c (generic_ivar_delete): implement
      (rb_ivar_delete): ditto
      (rb_attr_delete): ditto
      [ruby-core:69323] [Feature #11170]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading