0

たとえば、各カウンタ変数カテゴリを個別に保持する辞書を作成できます。

private Dictionary<Int32, Int32> CountersA = new Dictionary<Int32, Int32>();
private Dictionary<Int32, Int32> CountersB = new Dictionary<Int32, Int32>();
private Dictionary<Int32, Int32> CountersC = new Dictionary<Int32, Int32>();

辞書キーはすべての辞書に共通であり、エントリの数は実行時に変更されます。これはマルチタッチアプリケーション用であり、生成されるキーの数はタッチする指の数になるためです。

各辞書エントリのカウンターは、実行時に(つまり、指がサーフェス上を移動しているときに)リアルタイムで迅速に追加およびリセットされます。任意のキーは常に各ディクショナリに表示され、各ディクショナリのそのキーの値は異なる目的で使用されます。

たとえば、任意のキーのすべての値を保持するStructを作成して、キーとStructで構成される単一のディクショナリを作成する方がよいでしょうか。それともStructの値を継続的に読み書きすることでパフォーマンスに悪影響が出るでしょうか。 ?それとも、速度パフォーマンスがここでの問題であることを念頭に置いて、これを行うためのより良い方法はありますか?

4

1 に答える 1

0

タッチする指の数だけをキーとして持っている場合 (たとえば 10 ;-)、辞書をスキップして、実際にデータを含む構造体の配列を作成する必要があります。

var FingerData = new myStruct[maxFingers];

このようにして、データを直接指します (辞書は O(1) ですが、キーからバケットを計算する必要があります)。また、より小さなデータ構造になるため、キャッシュと CPU レジスタにより適しているため、少し高速になる可能性があります。

于 2012-07-04T15:14:56.503 に答える