Quantcast
Channel: PHP7.4タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 113

連想配列のデフォルト値を省略すると実行速度は速くなる

$
0
0

気になったこと

以下のように引数の連想配列に不足しているキーを自動で補ってくれる関数がある。

f.php
functionf($option=[]){$option+=['text1'=>'1','text2'=>'2','separator'=>'/',];returnimplode($option['separator'],[$option['text1'],$option['text2']]);}

関数の呼び出し時に(a)オプション配列にすべてのキーを指定する場合、(b)デフォルト値を省略した場合、どちらの実行速度が速いか?

時間計測スクリプト

benchmark.php
$t1=microtime(true);for($i=0;$i<500000;$i++){f(['text1'=>'abc','text2'=>'def','separator'=>'/',]);}$t2=microtime(true);$t3=microtime(true);for($i=0;$i<500000;$i++){f(['text1'=>'abc','text2'=>'def',]);}$t4=microtime(true);echo($t2-$t1)."\n";echo($t4-$t3)."\n";exit;

結果

条件実行時間avg (sec)
(a)オプション配列にすべてのキーを指定する場合0.12881302833557
(b)デフォルト値を省略した場合0.12693285942078
  • デフォルト値を省略したほうが実行速度は(若干)速い。
  • フレームワーク(CakePHP, Laravelなど)の関数のように中身が複雑だと、さらに差が広がる。
  • デフォルト値は省略したほうが実行速度は速いが、フレームワークのバージョンアップでデフォルト値が変わり、デグレが起きる可能性に留意する。

Viewing all articles
Browse latest Browse all 113

Trending Articles