note 112713 added to class.recursiveiteratoriterator

From: Date: Tue, 16 Jul 2013 06:06:02 +0000
Subject: note 112713 added to class.recursiveiteratoriterator
Groups: php.notes 
Request: Send a blank email to php-notes+get-195638@lists.php.net to get a copy of this message
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! ---- Server IP: 69.147.83.199 Probable Submitter: 91.215.129.130 ---- Manual Page -- http://php.net/manual/en/class.recursiveiteratoriterator.php Edit -- https://master.php.net/note/edit/112713 Del: integrated -- https://master.php.net/note/delete/112713/integrated Del: useless -- https://master.php.net/note/delete/112713/useless Del: bad code -- https://master.php.net/note/delete/112713/bad+code Del: spam -- https://master.php.net/note/delete/112713/spam Del: non-english -- https://master.php.net/note/delete/112713/non-english Del: in docs -- https://master.php.net/note/delete/112713/in+docs Del: other reasons-- https://master.php.net/note/delete/112713 Reject -- https://master.php.net/note/reject/112713 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#195638) next »