什麼將是C#的背景下,最好的辦法是字符串,消耗更少的空間,UINT64或C#
在C#中,我使用的字典。我希望它使用更少的內存空間。什麼會更好?
一個字典,其中的密鑰類型是
Uint64
或密鑰類型是string
?在這兩種情況下,值都是一個自定義類,對於每個字典都是相同的。我已宣佈字典如下,
private static readonly Dictionary<string, List<Node>> HashTable = new Dictionary<string, List<Node>>();
類節點被定義爲如下,
public class Node { public UInt64 CurrentIndex { get; set; } public string NextHashedString { get; set; } public int NextHashPos { get; set; } }
字符串的鍵實際上是從一個字符串散列值計算如下, 字符串的長度可能爲1到20個字符。
static UInt64 CalculateHash(string read, bool lowTolerance) { UInt64 hashedValue = 0; int i = 0; while (i < read.Length) { hashedValue += read.ElementAt(i) * (UInt64)Math.Pow(31, i); if (lowTolerance) i += 2; else i++; } return hashedValue; }
現在,我想存儲此散列值作爲字典的關鍵。什麼是最好的主意。我使用Uint64或將其轉換爲字符串並將字符串用作字典鍵。 我的主要目標是字典使用最小空間和搜索時間的關鍵是更快。
我有一個3571079個字符的文件。我可以將整個文件讀入一個字符串還是需要高級數據結構?
您尚未提供關於第一種情況的足夠數據。能夠在UInt64密鑰或字符串密鑰之間進行選擇是不尋常的... – 2012-03-03 10:40:37
這個問題對我來說還不清楚......你能提供一些你想要實現的例子嗎? – digEmAll 2012-03-03 10:40:54
@JonSkeet我用snippets修改了這個問題。 – 2012-03-03 10:48:05