我刚刚发现了一些非常奇怪的
PHP.
@H_301_18@如果我通过引用将变量传递给一个函数,然后调用一个函数,这是非常慢的.
如果循环内部函数调用,并且该变量很大,则可能比通过值传递变量时要慢许多个数量级.
例:
<?PHP function TestCount(&$aArray) { $aArray = range(0,100000); $fStartTime = microtime(true); for ($iIter = 0; $iIter < 1000; $iIter++) { $iCount = count($aArray); } $fTaken = microtime(true) - $fStartTime; print "took $fTaken seconds\n"; } $aArray = array(); TestCount($aArray); ?>
这一直在我的机器上运行大约20秒(在PHP 5.3上).
但是,如果我改变函数来传递值(即函数TestCount($aArray)而不是函数TestCount(& $aArray)),那么它运行在大约2ms – 字面上就是10,000倍!
对于其他内置函数(如strlen)和用户定义的函数也是如此.
这是怎么回事?