2012-03-16 5 views
-1

次のうちどれが最適なアプローチですか?オプションAまたはB?PHPで多次元配列の値を検索する際にかなりの遅延はありますか?

オプションA:二回多次元配列の値を調べる

if($my_array["dimension1"]["dimension2"]["dimension3"] > 0) { 
    echo $my_array["dimension1"]["dimension2"]["dimension3"]; 
} 

オプションB:一度多次元配列の値を調べるが、個人的に余分な変数defintionと

$dimension3 = $my_array["dimension1"]["dimension2"]["dimension3"]; 
if($dimension3 > 0) { 
    echo $dimension3; 
} 

私はオプションBをより読みやすく見ていますが、このコードは数十万回実行されているので、より最適なアプローチが優先されます。

+8

コード内でボトルネックと認識されていない限り、最も読みやすいものを使用してください。プロファイラを使用してボトルネックかどうかを特定することも、microtime()を使ってコードのタイミングセクションを調整することもできます。 –

+4

実際のシナリオで実際に違いを示すことができれば非常に驚きますが、自分でそれを測定しない? – Jon

+2

このような微細最適化については心配しないでください:S –

答えて

1

私はオプションBがパフォーマンスに関して優れていると思います。

実行時に指定した多次元配列のセルがポイントするメモリ位置を見つける必要があります。単純な変数値を入力する方がより迅速です。

したがって、配列を一度入力して一時変数に値を格納すると、スクリプトは(一時変数を格納するために)より多くのメモリを割り当てますが、2回目の値を入力すると非常に迅速になります必要!

もちろん最適化の他の種類は、私はより良い方法は、あなたのプロジェクトは(そのようなアレイを呼び出すの番号を参照)より大きくなるにつれ、あなたがしたい自分

0

ことによってそれをテストすることです言ったことを証明するように起こることができますオプションBを使いたいと思っています...しかしそれは非常にマイナーなので、私は本当に顕著な違いの例を考えることができませんでした。

-1

私はオプションAに行くでしょう。単に、オプションBに余分な変数割り当てと追加の割り当て操作があるからです。

マイナーゲイン。それでもなお利益です。 :-)