2012-04-17 11 views
0

私は質問を言い換える理由がよくありません。私にそれを提案するかもしれません。たいていの場合、私はPHPで変数を再利用しています。どれがメモリ/プロセッサの効率が良いのでしょうか。例えばメモリ/プロセッサはどれが効率的ですか?

場合

$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); 

私の質問からではありませんコード可読性の観点から。私は、どれがメモリとプロセッサ利用率の点で効率的な方法になるのだろうかと思います。

+1

いつでもマイクロベンチマークを実行できます... – Andrew

+0

この質問をcodereviewに投稿 – Starx

+0

コードの最速部分の最適化のポイントは何ですか? – Jon

答えて

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

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

処理時間では実質的に差がありませんです。

論理的に意味のあるものに進む。 $string_varがもう必要ない場合は、別の変数として保存する必要はありません。可能な限りあなたの名前空間を宣言してみてください。

+0

「あなたの名前空間を宣言しよう」とはどういう意味ですか?不要な変数を設定しないことを意味しますか? – sakhunzai

+0

最小限の量の変数、識別子、定数、関数などを使用してください。変数が増えると、バグや混乱、非効率の可能性が増します。 – deceze

+0

はい、あなたは正しいです、ist変数が 'garbage collected'されていることをテストする方法100%@mensiはそのアイデアの提案者ではありません(回答1コメント参照) – sakhunzai

1

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

+1

に属しているので、話題にならないようにするガベージコレクションはずっと後で起こる可能性があるので、これは完全に真実ではありません。 – mensi

0

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

0

これはPHPが、Cのような「低レベル」言語ではなかった場合、答えは非常に簡単になります:

  1. スピードにややより効率的になります(直接メモリに転送先の場所に結果を書き換えます、ポインタの書き換えをスキップ)
  2. は、メモリ(操作直後に割り当て解除された操作の結果を保持する一時的な場所、永続的に割り当てられた1つの変数)で少し効率的です。

PHPがスクリプト言語になっているので、私がBと言うことができるのは長期的にはほんのわずかなメモリ保守的かもしれませんが、その量は本当に重要ではありません。それ以外は、すべての賭けはオフで、ベンチマークを書く。

関連する問題