func memHashString(str string) uint64 {
	ss := (*stringStruct)(unsafe.Pointer(&str))
	return uint64(rtmemhash(ss.str, 0, uintptr(ss.len)))
}
memHashString is the hash function used by go map, it utilizes available hardware instructions
(behaves as aeshash if aes instruction is available).
NOTE: The hash seed changes for every process. So, this cannot be used as a persistent hash.
package shardedmap
import (
	"runtime"
	"unsafe"
)
var defaultShards = runtime.NumCPU() * 16  
func rtmemhash(p unsafe.Pointer, h, s uintptr) uintptr
type stringStruct struct {
	str unsafe.Pointer
	len int
}
func memHash(data []byte) uint64 {
	ss := (*stringStruct)(unsafe.Pointer(&data))
	return uint64(rtmemhash(ss.str, 0, uintptr(ss.len)))
}