0

私は五目並べの人工知能を作成していますが、すべての機能でテーブルを使用できるようにするために最適化された方法はどれかと思いました。このテーブルは、の形式になっていchar map[MAPSIZE][MAPSIZE]ます。私のアルゴリズムでは、このテーブルへの読み取りアクセスがたくさんあります。

次のように渡された場合、このマップにアクセスする方が速いですか?

  • 私のすべての関数の引数。
  • 私のアルゴリズムクラスのメンバー。
  • グローバル変数。
  • 関数への引数ですが、ポインターとして機能します。

近い将来、検索ツリーを実装するために、このテーブルのコピーをたくさん作成する必要があります。

御時間ありがとうございます、

4

2 に答える 2

3

クラスメンバーであることが理にかなっている場合は、クラスメンバーにします。これは、最適化の考慮事項から行うべきではない設計上の決定です(少なくともまだ、測定後、価値があると思われる場合は、設計とパフォーマンスのトレードオフを行うことができます)。

別の方法は、参照(またはポインターですが、参照はよりC ++っぽい)で渡すことです。

于 2013-01-05T11:16:34.813 に答える
2

次のように渡された場合、このマップにアクセスする方が速いですか:..。

方法が異なれば、実行時のコストも異なります。ただし、非常に非効率的なことを行わない限り、違いはほぼ確実に無関係です(たとえば、各メソッドでテーブル全体を不必要にコピーするなど)。

正確さと明確さを念頭に置いてこれを設計し、後で最適化について心配することをお勧めします。

于 2013-01-05T11:17:26.950 に答える