在今天的工作中,我曾與一個關於在範圍之間傳遞大量數據的拼貼爭論。 神話是在2個示波器之間傳遞時,引用使用更少的內存/ CPU使用量。我們建立的概念誰是正確的證明......這樣:通過引用或返回函數返回大量數據?
function by_return($dummy=null) {
$dummy = str_repeat("1",100 * 1024 * 1024);
return $dummy;
}
function by_reference(&$dummy) {
$dummy = null;
$dummy = str_repeat("1",100 * 1024 * 1024);
}
echo memory_get_usage()."/".memory_get_peak_usage()."\n";
//1 always returns: 105493696/105496656
$nagid = by_return();
echo memory_get_usage()."/".memory_get_peak_usage()."\n";
unset($nagid);
//2 always returns: 105493696/210354184 even if we comment 1st part
by_reference($dummy);
echo memory_get_usage()."/".memory_get_peak_usage()."\n";
unset($dummy);
但似乎參照它根據功能「memory_get_peak_usage()」
正如你看到的,使用大量數據會消耗更多的內存返回比作爲參考更聰明,但問題是,爲什麼? 歡迎任何啓發:)
這僅僅是給出答案,這是很好的一個。謝謝! :) – confiq 2011-05-25 18:33:47
鏈接似乎死了:( 我想這是一個鏡像站點: http://porteightyeight.wordpress.com/2008/03/18/the-truth-about-php-variables/ – confiq 2013-02-03 09:28:38