- 論壇徽章:
- 3
|
本帖最后由 dreamice 于 2010-11-10 15:26 編輯
你看看現(xiàn)在linux里面,路由,nf_conntrack,都用了這個hash算法:- static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval)
- {
- a += JHASH_GOLDEN_RATIO;
- b += JHASH_GOLDEN_RATIO;
- c += initval;
- __jhash_mix(a, b, c);
- return c;
- }
- #define __jhash_mix(a, b, c) \
- { \
- a -= b; a -= c; a ^= (c>>13); \
- b -= c; b -= a; b ^= (a<<8); \
- c -= a; c -= b; c ^= (b>>13); \
- a -= b; a -= c; a ^= (c>>12); \
- b -= c; b -= a; b ^= (a<<16); \
- c -= a; c -= b; c ^= (b>>5); \
- a -= b; a -= c; a ^= (c>>3); \
- b -= c; b -= a; b ^= (a<<10); \
- c -= a; c -= b; c ^= (b>>15); \
- }
復(fù)制代碼 解決hash沖突問題,可以極大的提高性能。 |
評分
-
查看全部評分
|