good observations. here is a help for you... your program modified to do any size computation in any size of memory (so you need not look for that special machine)
https://play.golang.org/p/m03mnIP4F0E On Wed, Feb 13, 2019 at 10:11 PM Serhat Sevki Dincer <[email protected]> wrote: > 14 Şub 2019 Per 01:58 tarihinde Michael Jones <[email protected]> > şunu yazdı: > >> Serhat, >> >> Some more ideas for you to consider: the expected number of collisions >> for an ideal random hash, the option of "folding in" the high bits of the >> hash rather than truncating, and finer control of operation. >> >> https://play.golang.org/p/92ERC4PJKAL >> > > Hi Michael, > Here with your variant: > > x = uint64(1<<64-59) ^ uint64(len(s)) > > for i := len(s) - 1; i >= 0; i-- { > x ^= uint64(s[i]) > x *= 11400714819323198549 > } > > // fold high bits > > you have a direct collision with input length's lowest byte (which is > practically the length) and input's first byte. This is better for > initialization: > > x = uint64(len(s)) > x *= 11400714819323198549 > > at the cost of an extra multiplication. > > Folding high bits does not change collision characteristic, right? > Also when the last operation is a multiplication, you don't seem to need > it, if at all it is useful. > >> -- *Michael T. [email protected] <[email protected]>* -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
