1

ループで実行される前処理コードの平和があります。この平和なコードには 1 つの大きな配列が必要ですが、読み取り専用であり、操作目的ではありません。この配列は、ループの前に 1 回生成します。

ここで、このコードを関数に移動して、他のスクリプトで再度使用したいと思いますが、それをきれいな方法で行う方法はわかりませんが、それでもパフォーマンスは良好です:

  • 関数自体で毎回この大きな配列を生成するのは良くありません。これは常に同じ配列であり、不要なオーバーヘッドが発生するためです。
  • これは悪い習慣であるため、グローバル配列を使用したくありません
  • したがって、関数を呼び出すたびにパラメーターとして渡すのが最善だと思います。

最後のオプションもあまり好きではありません。引数リストが乱雑になり、これによって引き起こされるオーバーヘッドがよくわからないからです。私が理解しているように、配列は毎回コピーされます-したがって、( & 演算子を使用して) 参照渡しすることをお勧めしますか?

4

4 に答える 4

3

パフォーマンスに本当に関心がある人は、

パフォーマンスが重要なコードで大きな配列を処理しないようにします。

本質的に遅いプロセスをスピードアップするトリックをする代わりに。

したがって、REAL CASE (配列の目的、処理、および内容) を知らなくても、唯一の答えは次のようになります。

したがって、配列をデータベースに変えて、必要なデータのみを選択します。

これは、このような一般的な質問に対する一般的な回答です。

于 2012-05-07T09:44:38.110 に答える
1

配列をシリアル化し、ファイルにシリアル化して書き込むことができます。したがって、そのファイルを読み取り、シリアル化を解除して、後でコードで使用する方が高速です。

于 2012-05-07T09:37:33.883 に答える
1

オブジェクト指向プログラミングを使用して、配列を生成するメソッドと配列を使用して計算するメソッドの 2 つのメソッドを持つクラスを作成します。シングルトンのようなパターンを使用して、オブジェクトが唯一のインスタンスであることを確保するか、静的変数を使用します。このクラスを異なるスクリプト/プロジェクト間で共有するパッケージを作成します。

質問は非常に一般的であるため、非常に抽象的な回答です。

于 2012-05-07T10:56:41.540 に答える
-2

参照で渡すだけで十分だと思いますが、時々、参照で渡すとタイムコールの警告が発生します。後で問題が発生する可能性があります。

于 2012-05-07T09:47:35.770 に答える