Quote:

It is difficult to say how this change will affect hash table performance in general - most overhead is due to the scripting language and other features.


Compared to the no-beta 7.52, in this test beta 1897 benchmarked slower. The speed difference is around 30% at buckets=100, but the speed is much closer at greater and fewer buckets, so I don't see how this can be blamed on fnv1a. The speed in the prior beta is in-between the speed from the newest beta vs the no-beta.

7.52 1897 buckets 1 = hadd 29079 ms hget 28673 ms
7.52 1897 buckets 2 = hadd 21699 ms hget 23245 ms
7.52 1897 buckets 11 = hadd 11544 ms hget 13058 ms
7.52 1897 buckets 51 = hadd 5740 ms hget 6677 ms
7.52 1897 buckets 100 = hadd 4290 ms hget 5569 ms
7.52 1897 buckets 10000 = hadd 2886 ms hget 4180 ms

7.52 1438 buckets 100 = hadd 3837 ms hget 4992 ms

7.52 buckets 1 = hadd 29469 ms hget 28860 ms
7.52 buckets 2 = hadd 21778 ms hget 21933 ms
7.52 buckets 11 = hadd 10655 ms hget 11965 ms
7.52 buckets 51 = hadd 4306 ms hget 5164 ms
7.52 buckets 100 = hadd 3323 ms hget 4228 ms
7.52 buckets 10000 = hadd 2730 ms hget 3666 ms

6.35 buckets 1 = hadd 179573 ms hget 175438 ms
6.35 buckets 100 = hadd 4602 ms hget 5881 ms
6.35 buckets 10000 = hadd 3073 ms hget 4119 ms

Code:
alias hadd_test {
  hfree -w hashtest | hmake hashtest $1
  var %j 99999 , %i %j , %ticks $ticks
  while (%i) {
    hadd hashtest item $+ %i
    dec %i
  }
  var %msg hadd $calc($ticks - %ticks) ms , %ticks $ticks
  while (%j) {
    var %a $hget(hashtest,item $+ %j)
    dec %j
  }
  echo -a $version $beta buckets $hget(hashtest).size = %msg hget $calc($ticks - %ticks) ms
}