2

3D モデリング プログラムのプラグインを作成しています。表示パイプラインをインターセプトし、実際にモデル内になくても表示される追加のジオメトリを挿入できる API の機能があります (表示はできますが、選択/移動/削除などはできません)。 .

API のこの機能の一部は、表示する追加のジオメトリをプログラムに伝えるために使用される、画面が更新されるたびに呼び出されるメソッドです。現在、foreach ステートメントで反復処理されるHashSetがあります。OnBrepは、API の汎用ジオメトリ クラスです。

「ゴースト」ジオメトリを実際のモデルにダンプする追加のコマンドがあります。ジオメトリが実際にモデル内にある場合、表示が大幅に高速化されることがわかりました。それで、オブジェクトのリストをプログラムに提供するより速い方法があるかどうか疑問に思っていますか? 単純な 1 次元配列は、HashSet<> よりも大幅に高速でしょうか?

4

3 に答える 3

1

オブジェクトのコレクションを返す最も速い方法は、(a)コレクションを構築するために内部的に使用された実際の物理型、または(b)データがコピーされないようにキャストできる型のいずれかを返すことです。メモリ内。データのコピーを開始するとすぐに(たとえば、、、CopyToコピーコンストラクターなど)、時間が失われます。ToArrayToList

そうは言っても、アイテムの数が多くない限り、これはマイクロ最適化になるため、おそらく実行する価値はありません。その場合は、呼び出し元のコードに最も役立つコレクションタイプを返すだけです。よくわからない場合は、推測するのではなく、タイミングテストを行ってください。

于 2009-08-31T19:07:55.573 に答える