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文字のファイルがあります。ファイル全体を文字列に読み込むことはできますか、それとも高度なデータ構造が必要ですか?