0

質問を言い換えるより良い理由はありません。あなたは私に提案するかもしれません。ほとんどの場合、php で変数を再利用しますが、どれがメモリ/プロセッサ効率が高いのだろうかと思います。例えば

ケースA

 $string_var ='1,2,4,5,6,7,8';
 $array_var  =explode(',',$string_var);

ケース B : 同じ変数を再利用 (文字列変数と配列オブジェクトとして再宣言)

 $array_var ='1,2,4,5,6,7,8';
 $array_var  =explode(',',$array_var);

私の質問は、コードの読みやすさの観点からではありません。メモリとプロセッサの使用率に関して、どちらが効率的な方法になるのだろうか。

4

4 に答える 4

2
$string_var ='1,2,4,5,6,7,8';
$array_var  =explode(',',$string_var);

これにより、文字列と配列の両方がメモリに保持され、より多くのメモリが使用されます。元の変数を上書きすると、以前に保存されたコンテンツは、ある時点でガベージコレクションされ、メモリが解放されます。実際には、値はすぐにガベージコレクションされないため、実際の違いはない可能性があります。変数のスコープが適切であれば、とにかくすぐにスコープから外れるはずです。

処理時間にほとんど違いはありません。

論理的に意味のあるものを使用してください。もう必要ない場合は$string_var、別の変数として保持する必要はありません。名前空間をできるだけ整理するようにしてください。

于 2012-04-17T08:02:48.800 に答える
1

新しい変数を作成するたびに、その変数に少しのメモリが割り当てられます。したがって、2 つの変数は約 2 倍のメモリを必要とします。1 つの変数に必要なメモリのみを使用するため、同じ変数ケース Bを使用することをお勧めします。

于 2012-04-17T08:01:13.193 に答える
0

どちらも同じようにプロセッサに影響を与えます。ただし、ケースBでは、既存の変数を新しい配列に更新するため、メモリ使用量が少なくなります。

于 2012-04-17T08:01:46.163 に答える
0

これが PHP ではなく、C のような「下位レベル」の言語である場合、答えは非常に簡単です。

  1. 速度がわずかに効率的になります(結果をメモリ内の目的の場所に直接書き換え、ポインターの書き換えをスキップします)
  2. メモリの問題でわずかに効率的になります(操作の右側と左側の間の結果を保持する一時的な場所は、操作の直後に解放され、永続的に割り当てられる変数は1つだけです。)

PHP はスクリプト化された言語であるため、長期的には B の方がわずかにメモリを節約できると言えますが、その量は実際には取るに足らないものです。それ以外は、すべての賭けはオフです、ベンチマークを書きます。

于 2012-04-17T08:06:59.760 に答える