この2つのパフォーマンスの違いはありますか?アレイの初期化パフォーマンスの差
$rules['a']['x'] = 'someValue';
$rules['a']['y'] = 'anotherValue';
と
$rules['a'] = [
'x' => 'someValue',
'y' => 'anotherValue',
];
この2つのパフォーマンスの違いはありますか?アレイの初期化パフォーマンスの差
$rules['a']['x'] = 'someValue';
$rules['a']['y'] = 'anotherValue';
と
$rules['a'] = [
'x' => 'someValue',
'y' => 'anotherValue',
];
他のみんなで述べたように、任意の違いは無視できるだろうと、あなたはこれを気にしてはいけません。
しかし、第2の方法は、技術的にはより性能が高いはずです。なぜなら、少なくとも1つの命令で全体を処理するからです。
あなたがこれを行うとき:
$rules['a']['x'] = 'someValue';
$rules['a']['y'] = 'anotherValue';
を... PHPエンジンは、それが(その場合には、エラー)、配列、ArrayAccess
オブジェクトやないのかどうか、最初$rules
が存在するかどうかを確認する必要があります。その後、$rules['a']
でも同じことをしなければなりません。
そして、を2回とする必要があります。両方の行が別々の式を表すからです。
他方で:
$rules['a'] = [
'x' => 'someValue',
'y' => 'anotherValue',
];
...のみ$rules
は($rules['a']
が存在するかどうか、それが何であるかの種類世話をしない)されている情報を確認し、それは一度だけそれを行う必要があります。これは非常に、非常に簡単に説明し、遊びに来て、違いを作る他の多くの要因があること
注意。しかし、それはPHPのような高水準言語を使用する利点です。一般的に、シーンの背後にあるものが気にする必要はありません。
パフォーマンスの最適化を行う場合は、これは間違いです。あなたの "ボトルネック"がどこにあるのかを見つけて、それらに取り組んでください(プロのヒント:10回中9回、データベースクエリです)。
[1st](https://3v4l.org/pI9Ap/perf#output)と[2nd](https://3v4l.org/EjVfZ/perf#output)では、違いが大きくなるのではないかと疑います。 – Script47
自分でテストできます。 '$ startTime = microtime(true);のようなことをします。 for($ i = 0; $ i <100000; $ i ++){$ rules ['a'] ['x'] = 'someValue'; $ rules ['a'] ['y'] = 'anotherValue';} 'total time ='をエコーします。 microtime(true) - $ startTime;およびorherの場合も同じです。しかし、私はそれが大きな違いをもたらすのではないかと疑っています。 –
@Tobias Fはいまあ私もこの1つを提案していた –