При обращении к функции устанавливается новый scope (область видимости переменных), а это довольно дорогая операция. Поэтому если алгоритм удобно выразить в виде цикла вместо рекурсии, обычно выбирают цикл. А когда цикл можно заменить вызовом библиотечной функции это еще выгоднее ))) Ты можешь сам попробовать разные варианты и замерить время выполнения с помощью microtime() и расход памяти через memory_get_peak_usage(). edited: объяснение - On PHP function calls
т.e в данном случай родной функций strlen ? mctime(); у меня выдает время с погрешностью. т.e всегда относительно разное.так и должно быть? Добавлено спустя 11 минут 2 секунды: Код (Text): function while_count($item) { $i = 0; while (isset($item{$c})) { $c++; } return $c; } echo while_count($item); думаю задача решена код простой удобный !
Всем доброго времени суток! продолжая тему реализаций встроенных функций силами php ( как практика построение алгоритмов) хочу выставить на обсуждение Г код Var_dump(); Код (Text): function mvar_dump($item){ if(is_array($item)){ $result = 'array('.count($item).'){'; foreach($item as $k =>$v){ $result .= '['.$k.']=>'.gettype($v).'('.count($v).')'; } $result.='}'; return $result; } if(is_int($item)){ return 'int('.$item.')'; } return gettype($item).'('.mystrlen($item).')'.'"'.$item.'"'; } $item = 'fsdfdfds'; echo mvar_dump($item);
конечно! часто делают так: измеряют время не одного факта, а цикла который выполняет действие 1000 раз или 1000000 раз, тогда итоговое число будет как-то статистически достоверно. и то, запускают тест несколько раз чтобы убедиться, что число изменяется не сильно раз от раза.
да я изначально думал - добавить рекурсию или как то иначе решить это .... как бы вы решили данный момент ? Код (Text): if(is_array($k))$result.=mvar_dump($k);