2013-08-25 79 views
1

我看到this後,但並不完全理解它,它並沒有完全回答我的問題。另外 - 它似乎暗示陣列更慢。我想:那不可能是是!陣列分配性能

當所有其他條件相同時,以及爲了提高速度,在數組中分配變量的最佳方法是什麼?

這是更好的:

$part1 = "a"; 
$part2 = "b"; 
$part3 = "c"; 
$part4 = "d"; 

(當然,我知道這不會讓你就像你使用數組與數據進行交互,但讓我們說,你也沒必要)

這是更好的:

$part[1] = "a"; 
$part[2] = "b"; 
$part[3] = "c"; 
$part[4] = "d"; 

這是更好的:

$part = array("a","b","c","d"); 

還是別的?而爲什麼一個人比其他人更好的背後的機制是什麼?

另外 - 它取決於被分配的元素的數量?在討論多維數組,不同數據類型或不同語言時,答案如何改變?此外,它是否會改變,如果我初始化數組然後添加元素?

+0

可能完成: http://stackoverflow.com/questions/4904049/php-array-performance – fabien

回答

0

無論您如何指定或分配變量,數組都是一個數組。一旦你創建了一個數組,它就會被放入memeory中(除非你正在使用SplFixedArray)並且內存中的數組增長非常快。

考慮這篇文章它做了深入探討了如何資源密集型數組是:http://nikic.github.io/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html

從文章:

在這篇文章中我想探討PHP數組的內存使用(和 值一般)使用以下腳本作爲示例,其中 創建100000個唯一整數數組元素並測量 產生的內存使用情況:

<?php 
$startMemory = memory_get_usage(); 
$array = range(1, 100000); 
echo memory_get_usage() - $startMemory, ' bytes'; 

多少錢,你會希望它是什麼?簡單的說,一個整數是8個字節(在一個64位unix 機器上並使用長類型),並且你得到了100000個整數,所以你顯然需要800000字節。這就像0.76 MB。

現在嘗試運行上面的代碼。如果你願意,你可以在網上做。這 給我14649024字節。是的,你聽錯了,那是13.97 MB - 比我們估計的高十八倍。

+0

哎呀!那麼這是否意味着我有能力 - 我應該只使用單個變量?如上面的第一個例子? – SimaPro

+0

此外,上面的文章,或我從它得到的tl;博:PHP是動態和靈活的,因此影響速度和效率。它必須運行很多獨立的進程來處理數組,因此需要大量的內存。感謝您的鏈接! – SimaPro