は、HashSet<T> 最速のコンテナにしていますか?
質問
いことを確認するに特定の文字列が含まれるセットのその他のもの
private bool Contains(string field)
{
return this.Fields.Contains(field); // HashSet<string> local property
}
どのタイプコンテナの使用だけの課題でに数文字列のチェックはもう一つはやはありませんか?
解決
それは、キーと値を必要と辞書とは異なり、ルックアップするために一つの値を含んでいるのではい、HashSetのは、このために最適です。
他のヒント
なHashSetす。確かに。でも、それだけではありません、質問です。を問い 最速を可能に ルックアップ.
では最速で可能ですか?いや、もちろん、そうではありません,()内に適切な形を入れて下さい。
まず、話"最速"として記述するか"最速"です。Do you mean:
- 最小 最悪の場合 タイミング
- 最小 平均 タイミングの平均以上に多くのタイミング
- 最小平均のタイミング 特定の使用パターン
- something else
?明らかにされるか"最速""できます。できる工夫するアルゴリズムの 理論的には最高速を可能に た場合にのみかか 最速を可能に を意味します。
たとえば、イン語コンパイラです。何かいにコンパイラでコンパイルするかどうかをチェックが特定の文字列がリストの文字列です。か確認を行っておりますが、文字列は、キーワードにしておりますので見上げるかどうか指定された文字列は内部に設定{"int","ダブル","た","foreach","クラス"...}
までついてより詳しく知りたい方はハッシュセットとも。しかし、もっと欲しかった 性能を最大限に発揮させる まいります。また、例えば、分析を行うのに数億円の既存のソースコードをキーワードにした最も一般的とした少なくとも共有され、書きカスタムハッシュテーブルを最適化(1)急速に拒否するものはなかったキーワード、(2)急速に認識で最も共通のキーワードの認識とその他のキーワード
ることに注意が必要で静解析ものを行うなどが代表的な場合を行っている分の評れる場合が多くあり珍しいキーワードを使用します。もう一つのアプローチしていいを書く 自己チューニング ハッシュテーブル 動的に 特に、特定の文字列が検索します。
例えば、書いていて、実施のJScriptを行います。よく探さねばならな文字列セットの文字列:
for(i = 0; i < 10; ++i) { foo.bar(i); }
ここでいう文字列"bar"オブジェクト内に特定した"foo"十倍。のハッシュテーブル内の"foo"を実装することをルックアップお知らせの最初のループを"bar"を使用するので動的にインポートのハッシュテーブル構造の 第 時間のループのルックアップが早くなるのです。この戦略を採用しました当社の実施JScript.
現在では、この最適化の場合をループですが、この場合には潜在的に遅す:
for(i = 0; i < 10; ++i) { foo.bar(i); foo.blah(i); foo.abc(i); }
ましたのではない解析を実現"こんにちはまれて新たに誕生したばかりで最適化されたこのハッシュテーブルは、現在私たちが発展していくためになすべてのものがいいでしょうかをお持ちいただくだけでうれしい。"
幸いなことに、また、様の 最速を可能に ルックアップ.お探しの 合理的に高速 ルックアップ.
きを十分に確認してから記述しようご使用の場合は、 早いルックアップ?多くのアルゴリズムを利用できる高速にルックアップが取れ非常に複雑です。