我在golang的源代碼中發(fā)現(xiàn)了這個(gè)函數(shù),并想知道它是否真的是一個(gè)完美的哈希函數(shù)。這是測試的正確方法嗎?package mainimport ( "fmt" "strconv" "unsafe")//go:linkname strhash runtime.strhashfunc strhash(p unsafe.Pointer, h uintptr) uintptrconst seed = 666func main() { m := make(map[uintptr]string) for i := 0; i < 1000000000; i++ { key := strconv.Itoa(i) hash := strhash(unsafe.Pointer(&key), seed) _, exist := m[hash] if exist { fmt.Println("collision") break } m[hash] = key } fmt.Println("finish")}
1 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
據(jù)我所知,事實(shí)并非如此。它使用 AES 指令來創(chuàng)建哈希。您可能想查看類似 https://github.com/cespare/mph 的東西。
- 1 回答
- 0 關(guān)注
- 113 瀏覽
添加回答
舉報(bào)
0/150
提交
取消