PHPを使っていますが、なぜ関数(strlen、countなど)に参照を渡してコールすると重くなるんですか?
内部関数コールを繰り返しループさせ、変数が大きい場合だと、変数が値によって投げられるよりも重くなってしまいます。
例
lang
1<?php 2function Test(&$Array) 3{ 4 $Array = range(0, 100000); 5 $fStart = microtime(true); 6 7 for ($i = 0; $i < 1000; $i++) 8 { 9 $Count = count($Array); 10 } 11 12 $fTaken = microtime(true) - $fStart; 13 14 print "$fTaken seconds\n"; 15 16} 17$Array = array(); 18Test($Array); 19?>
こうすると走らせるのに終始20秒ほどかかります。
ですが、関数を値によって投げるように変更すると(例:function Test(&$Array)
の代わりにfunction Test($Array)
を使うと)、およそ2ミリ秒で走るようになり、1万倍も速くなります!
strlenなど、他のビルトイン関数にも同じことが言えます。
何が問題なのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。