note 112713 deleted from class.recursiveiteratoriterator by salathe

From: Date: Mon, 24 Aug 2020 12:56:52 +0000
Subject: note 112713 deleted from class.recursiveiteratoriterator by salathe
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-215014@lists.php.net to get a copy of this message
Note Submitter: zlobnygrif at gmail dot com ---- Some speed tests <?php $timer = function ($name = 'default', $unset_timer = TRUE) { static $timers = array(); if ( isset( $timers[ $name ] ) ) { list($s_sec, $s_mic) = explode(' ', $timers[ $name ]); list($e_sec, $e_mic) = explode(' ', microtime()); if ( $unset_timer ) unset( $timers[ $name ] ); return $e_sec - $s_sec + ( $e_mic - $s_mic ); } $timers[ $name ] = microtime(); }; function f1 ($array) { $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array), RecursiveIteratorIterator::SELF_FIRST); foreach ( $iterator as $key => $value ) { if ( is_array($value) ) continue; } } function f2($array) { foreach ( $array as $key => $value ) { if ( is_array($value) ) f2($value); } } foreach ( [100, 1000, 10000, 100000, 1000000] as $num ) { $array = []; for ( $i = 0; ++$i < $num; ) $array[] = [1,2,3=>[4,5,6=>[7,8,9=>10,11,12=>[13,14,15=>[16,17,18]]]]]; $timer(); f1($array); printf("RecursiveIteratorIterator: %7d elements -> %.3f sec\n", $num, $timer()); $timer(); f2($array); printf("Recursive function : %7d elements -> %.3f sec\n", $num, $timer()); } ?> Output (PHP 5.4.9-4ubuntu2.1 (cli) (built: Jun 11 2013 13:10:01)) ======================= RecursiveIteratorIterator: 100 elements -> 0.007 sec Recursive function : 100 elements -> 0.002 sec RecursiveIteratorIterator: 1000 elements -> 0.036 sec Recursive function : 1000 elements -> 0.024 sec RecursiveIteratorIterator: 10000 elements -> 0.425 sec Recursive function : 10000 elements -> 0.263 sec RecursiveIteratorIterator: 100000 elements -> 8.153 sec Recursive function : 100000 elements -> 2.654 sec RecursiveIteratorIterator: 1000000 elements -> 474.483 sec Recursive function : 1000000 elements -> 26.872 sec For one million elements recursive function is more quickly!

« previous php.notes (#215014) next »