首頁  >  文章  >  後端開發  >  torrentkitty search php foreach、while效能比較

torrentkitty search php foreach、while效能比較

WBOY
WBOY原創
2016-07-29 08:40:562652瀏覽

foreach是對數組副本進行操作(透過拷貝數組),而while則透過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組複製進去,而while直接移動內部指標。
在循環裡進行的是陣列「讀取」操作,則foreach比while快:

複製程式碼 程式碼如下:


foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key ];
}


在迴圈裡進行的是陣列「寫」操作,則while比foreach快:

複製程式碼

複製程式碼



複製程式碼

程式碼如下:


foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array[$key] = $array[$key] . '...';
}

總結:通常認為,foreach涉及到值複製,一定會比while慢,但實際上,如果僅僅是在循環裡進行數組的讀操作,那麼foreach是很

快的,這是因為PHP採用的複製機制是“引用計數,寫時複製”,也就是說,即便在PHP裡複製一個變量,最初的形式從根本上說其實

仍然是引用的形式,只有當變量的內容改變時,才會出現真正的複製,之所以這麼做是出於節省記憶體消耗得目的,同時也提升了複製的效率。這樣看來,foreach的高效率讀取操作就不難理解了。另外,既然foreach不適合處理數組寫操作,那麼我們可以得到一個結論,多數情況下,類似foreach ($array as $key => $value)形式的做數組寫操作得代碼都應該被替換成while (list($key) = each($array))。這些技巧產生的速度差異在小項目裡可能並不明顯,但是在類似框架這樣的大項目中,一次請求動輒便會涉及到幾百幾千幾次次數組循環操作,差異就會明顯放大。 以上就介紹了torrentkitty search php foreach、while效能比較,包括了torrentkitty search方面的內容,希望對PHP教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn