compiler/cclasses.pas: replace DJB2 with MurmurHash3
MurmurHash3 is considerably faster even on small strings, much better (see images [here](https://softwareengineering.stackexchange.com/a/145633)), and not much more complex. It is [public domain](https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash3.cpp). Patch: [murmur3.patch](/uploads/c1b4d69f13380f249a29368bfde49f05/murmur3.patch). My measurements with `-O4`: ``` x86-32 x86-64 DJBHash len 3 2.97 ns <- 4.09 ns (-20.9%) Murmur3 len 3 3.16 ns (-6.53%) 3.38 ns <- DJBHash len 4 3.81 ns (-26.6%) 4.12 ns (-40.1%) Murmur3 len 4 3.01 ns <- 2.94 ns <- DJBHash len 5 3.99 ns (-13.7%) 4.46 ns (-42%) Murmur3 len 5 3.51 ns <- 3.14 ns <- DJBHash len 6 4.26 ns (-17.3%) 4.52 ns (-26.6%) Murmur3 len 6 3.63 ns <- 3.57 ns <- DJBHash len 7 5.21 ns (-37%) 5.45 ns (-34.5%) Murmur3 len 7 3.81 ns <- 4.05 ns <- DJBHash len 24 13.3 ns (-70.8%) 13 ns (-74.7%) Murmur3 len 24 7.77 ns <- 7.45 ns <- DJBHash len 25 13.8 ns (-63.2%) 13.5 ns (-70.9%) Murmur3 len 25 8.43 ns <- 7.88 ns <- DJBHash len 26 14.3 ns (-69%) 14.1 ns (-78.6%) Murmur3 len 26 8.46 ns <- 7.88 ns <- DJBHash len 27 14.8 ns (-73%) 14.6 ns (-76.7%) Murmur3 len 27 8.53 ns <- 8.26 ns <- ``` `-O1` is, roughly saying, similar. As a copy-paste of `FPHash()`, `TStringHelper.GetHashCode()` can be redone the same way.
issue