diff options
| author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-30 20:45:44 +0000 |
|---|---|---|
| committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-06-30 20:45:44 +0000 |
| commit | cef8325e186795858ba08ca22722f60c362878a4 (patch) | |
| tree | 88ec09cd803e8f87f4e6a9c22063fafca0af919b /include/ruby/ruby.h | |
| parent | cb85fb9c4683f9d37dead6c7b1a6de027985d547 (diff) | |
struct.c: speedup for big structs
use simple custom open-addressing hash for big structs.
Original-patch-by: Sokolov Yura aka funny_falcon <funny.falcon@gmail.com>
in https://bugs.ruby-lang.org/issues/10585
* struct.c (AREF_HASH_THRESHOLD): new macro
(id_back_members): new ID
(struct_member_pos_ideal): new function
(struct_member_pos_probe): ditto
(struct_set_members): ditto
(struct_member_pos): ditto
(rb_struct_getmember): use struct_member_pos for O(1) access
(rb_struct_aref_sym): ditto
(rb_struct_aset_sym): ditto
(setup_struct): call struct_set_members
(struct_define_without_accessor): ditto
(Init_Struct): initialize __members_back__
[ruby-core:66851] [ruby-core:69705] [ruby-core:69821]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'include/ruby/ruby.h')
0 files changed, 0 insertions, 0 deletions
