dark-demon если бы foreach был ее алиасом, то время исполнения не различалось бы в 3 с лишним раза.. померил для join и implode (ибо первое - 100% алиас второго=)): Время исполнения join: 0.003045 секунд Время исполнения implode: 0.003158 секунд Время исполнения join: 0.003044 секунд Время исполнения implode: 0.003354 секунд Время исполнения join: 0.002817 секунд Время исполнения implode: 0.003095 секунд Время исполнения join: 0.002987 секунд Время исполнения implode: 0.004205 секунд Время исполнения join: 0.003038 секунд Время исполнения implode: 0.002909 секунд Время исполнения join: 0.002984 секунд Время исполнения implode: 0.003129 секунд Время исполнения join: 0.005415 секунд Время исполнения implode: 0.003009 секунд Время исполнения join: 0.002965 секунд Время исполнения implode: 0.002976 секунд
DarkElf, а можешь тестовый код выложить? а то иногда так намеряют, что удивляешься, как там ещё расположение звёзд не влияет...
PHP: <? $i = 10000; while($i--){ $arr[$i]=md5(rand(0,1000000)); } $t[0] = microtime(); $str0 = join('',$arr); $t[1] = microtime(); $str0 = implode('',$arr); $t[2] = microtime(); ?>
PHP: <? $i = 250; $arr = array(); $__foreach = array(); $__for = array(); $__while = array(); $__while_ass = array(); for($i;$i>0;$i--){ $arr[$i] = 'aaa'; } $t[0] = microtime(); foreach($arr as $k=>$v){ $__foreach[$k] = $v; } $t[1] = microtime(); $j = count($arr); for($j;$j>0;$j--){ $__for[$j] = $arr[$j]; } $t[2] = microtime(); $k = count($arr); while($k--){ $__while[$k] = $arr[$k]; } $t[3] = microtime(); reset($arr); while(list($k,$v) = each($arr)){ $__while_ass[$k] = $v; } $t[4] = microtime(); ?>
у меня первый и второй способ одинаково быстры, четвёртый раза в 3-4 медленней, а третий ещё в 1-2. пс: перечитал твой пост ещё раз с перва я его понял с точностью до наоборот... ну в общем логично, foreach - более специфичная конструкция, а потому легче оптимизируется. в случае же с листом приходится на каждой итерации определять истинность возвращаемого массива.
Время исполнения цикла for: 0.009874 секунд Время исполнения цикла foreach: 0.000196 секунд Время исполнения цикла while: 0.026588 секунд Время исполнения цикла while для ассоциированного массива: 0.027205 секунд Время исполнения цикла for: 0.000164 секунд Время исполнения цикла foreach: 0.000202 секунд Время исполнения цикла while: 0.000141 секунд Время исполнения цикла while для ассоциированного массива: 0.000853 секунд Время исполнения цикла for: 0.000198 секунд Время исполнения цикла foreach: 0.000173 секунд Время исполнения цикла while: 0.000137 секунд Время исполнения цикла while для ассоциированного массива: 0.000678 секунд Время исполнения цикла for: 0.000192 секунд Время исполнения цикла foreach: 0.000172 секунд Время исполнения цикла while: 0.000138 секунд Время исполнения цикла while для ассоциированного массива: 0.000739 секунд Время исполнения цикла for: 0.000168 секунд Время исполнения цикла foreach: 0.000304 секунд Время исполнения цикла while: 0.000149 секунд Время исполнения цикла while для ассоциированного массива: 0.000546 секунд Время исполнения цикла for: 0.000165 секунд Время исполнения цикла foreach: 0.000169 секунд Время исполнения цикла while: 0.000137 секунд Время исполнения цикла while для ассоциированного массива: 0.000549 секунд Время исполнения цикла for: 0.000164 секунд Время исполнения цикла foreach: 0.000197 секунд Время исполнения цикла while: 0.00014 секунд Время исполнения цикла while для ассоциированного массива: 0.00071 секунд Время исполнения цикла for: 0.000164 секунд Время исполнения цикла foreach: 0.000168 секунд Время исполнения цикла while: 0.000137 секунд Время исполнения цикла while для ассоциированного массива: 0.000962 секунд Время исполнения цикла for: 0.000165 секунд Время исполнения цикла foreach: 0.000169 секунд Время исполнения цикла while: 0.000139 секунд Время исполнения цикла while для ассоциированного массива: 0.000711 секунд Время исполнения цикла for: 0.000201 секунд Время исполнения цикла foreach: 0.000172 секунд Время исполнения цикла while: 0.000138 секунд Время исполнения цикла while для ассоциированного массива: 0.000691 секунд при $i = 250.