note 112713 added to class.recursiveiteratoriterator
| From: | zlobnygrif at gmail dot com | 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