我需要一種算法通過26.通過26
散列任意長度的字符串轉換成從值1我知道我能求和值轉換的任意字符串轉換爲1個字符的散列爲1的值的個人角色,並做一個國防部26 + 1,但認爲也許有人會有這樣做的更高性能的方式。
我需要一種算法通過26.通過26
散列任意長度的字符串轉換成從值1我知道我能求和值轉換的任意字符串轉換爲1個字符的散列爲1的值的個人角色,並做一個國防部26 + 1,但認爲也許有人會有這樣做的更高性能的方式。
您是否需要使散列值不會跨應用程序的不同運行更改?如果不這樣做,你想在內存中使用它,只需使用系統提供的功能GetHashCode
:
(s.GetHashCode() % 26) + 1
將映射一個字符串轉換爲整數1和26(含)之間。當然,這並不適用於像存儲數據庫這樣的任務。
我想要做的是將一個資源URL哈希到一個來自az的值,然後將資源的URL更改爲http:// {hash} .resource.somesite.com(即http://a.resource。 somesite.com)。 我們將爲a.resource.somesite.com,b.resource.somesite.com等創建DNS CNAME記錄。 這將允許瀏覽器更快地加載資源。 – 2010-02-10 21:02:33
模量和增量操作符是非常有效的。這幾乎適用於所有用途。
您是否確定了特定的性能問題?如果是這樣,情況如何?
與彙總單個字符的ASCII/Unicode值相比,使用哈希碼作爲另一張海報作爲模數基礎的推薦值會給您統計上更均勻的值差異。哈希運算速度也很快,但可能比每個位置的總和值慢一點。
您建議的解決方案似乎很好,只要您使用的方法匹配字符串均勻散列,並且字符串中的小改動應該在散列中創建相當大的改變。
我真的不認爲有更高性能的方式。 – pgsandstrom 2010-02-10 20:34:11