From: Eric Wong <normalperson@...>
Date: 2014-03-22T23:41:24+00:00
Subject: [ruby-core:61638] Re: [ruby-trunk - Feature #9425] [PATCH] st: use power-of-two sizes to avoid slow modulo ops

normalperson@yhbt.net wrote:
>  OK, I was right about compare_by_identity being worse with power-of-two,
>  but I fixed it by tweaking numhash:
>  
>  http://bogomips.org/ruby.git/patch?id=1579e9d0d82789

I tweaked that further, adding +3 instead of +1 to RUBY_SPECIAL_SHIFT
in r45384.  Also updated NEWS in case some extensions need tweaking for
performance.

Haswell Xeon E3-1230 v3 numbers:

hash_aref_miss  1.166
hash_aref_str   1.167
hash_aref_sym   1.224
hash_aref_sym_long      1.270
hash_flatten    1.656
hash_ident_num  1.142
hash_ident_obj  1.193
hash_ident_str  1.194
hash_ident_sym  1.171
hash_keys       1.002
hash_shift      1.122
hash_values     1.006
loop_whileloop2 1.001
vm2_bighash*    1.233