normalperson / yhbt.net wrote:
>    test and verify compare_by_identity performance
>  
>  I'm comfortable that ID, string and most objects will hash well with
>  power-of-two; but compare_by_identity, weakmap, vm->living_threads may
>  hash less well without a prime modulo (or maybe they hash badly
>  regardless of modulo!)

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 was wrong about IDs hashing well before, they hash OK now :)

results: http://80x24.org/bmlog-20140303-034047.26775.txt
the hash parts:
	hash_aref_miss	1.048
	hash_aref_str	1.162
	hash_aref_sym	1.000
	hash_flatten	1.092
	hash_ident_num	1.007
	hash_ident_obj	1.098
	hash_ident_str	1.106
	hash_ident_sym	1.018
	hash_keys	1.000
	hash_shift	1.011
	hash_values	1.011
	vm2_bighash*	1.183

These numbers are from my weaker AMD FX-8320 which gave me worse numbers
than my Haswell machine in my original test.  I'll try to test on my
Haswell machine soon (network outage there :<).

I'd like to commit the following three patches soon:
http://bogomips.org/ruby.git/patch?id=a3fde671ffeec8 new hash benchmarks
http://bogomips.org/ruby.git/patch?id=8f155afef61342 original patch
http://bogomips.org/ruby.git/patch?id=1579e9d0d82789 numhash tweak