Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- *
- */
- ini_set('memory_limit', -1);
- //putenv('summarize=1');
- function snap($name, $init_func, $func, $summarize = false)
- {
- $data = $init_func();
- if (getenv('summarize')) $summarize = true;
- if (!$summarize) {
- echo '##-----------------------------------------', PHP_EOL;
- echo '## The test of "', $name, '"', PHP_EOL;
- echo '##-----------------------------------------', PHP_EOL;
- }
- $start = microtime(true);
- $func($data);
- $end = microtime(true);
- if (!$summarize) {
- echo "## Start:\t", $start, PHP_EOL;
- echo "## End: \t", $end, PHP_EOL;
- echo "## Total:\t", $end - $start, PHP_EOL;
- echo '##-----------------------------------------', PHP_EOL, PHP_EOL;
- }
- else {
- echo $name, "\t", $end - $start, PHP_EOL;
- }
- }
- function array_init()
- {
- return range(0, 1000000);
- }
- // foreach
- snap('foreach (Read)', 'array_init', function($a)
- {
- foreach ($a as $k => $v) $k;
- });
- // for
- snap('for (Read)', 'array_init', function($a)
- {
- $key = array_keys($a);
- for ($i = 0, $end = count($key); $i < $end; ++$i) $a[$key[$i]];
- });
- // each
- snap('each,list (Read)', 'array_init', function($a)
- {
- reset($a);
- while(list($k, $v) = each($a)) $v;
- });
- // foreach
- snap('foreach as key (Write)', 'array_init', function($a)
- {
- foreach ($a as $k => $v) $a[$k] .= 'a';
- });
- // foreach
- snap('foreach ref (Write)', 'array_init', function($a)
- {
- foreach ($a as $k => &$v) $v .= 'a';
- });
- // for
- snap('for (Write)', 'array_init', function($a)
- {
- $key = array_keys($a);
- for ($i = 0, $end = count($key); $i < $end; ++$i) $a[$key[$i]] = 'a';
- });
- // each
- snap('each,list (Write)', 'array_init', function($a)
- {
- reset($a);
- while(list($k, $v) = each($a)) $a[$k] .= 'a';
- });
- /*
- * ##-----------------------------------------
- * ## The test of "foreach (Read)"
- * ##-----------------------------------------
- * ## Start: 1259729358.9
- * ## End: 1259729359.25
- * ## Total: 0.348405122757
- * ##-----------------------------------------
- *
- * ##-----------------------------------------
- * ## The test of "for (Read)"
- * ##-----------------------------------------
- * ## Start: 1259729359.51
- * ## End: 1259729360.11
- * ## Total: 0.599618196487
- * ##-----------------------------------------
- *
- * ##-----------------------------------------
- * ## The test of "each,list (Read)"
- * ##-----------------------------------------
- * ## Start: 1259729360.35
- * ## End: 1259729362.77
- * ## Total: 2.41448998451
- * ##-----------------------------------------
- *
- * ##-----------------------------------------
- * ## The test of "foreach as key (Write)"
- * ##-----------------------------------------
- * ## Start: 1259729363.04
- * ## End: 1259729364.13
- * ## Total: 1.0903198719
- * ##-----------------------------------------
- *
- * ##-----------------------------------------
- * ## The test of "foreach ref (Write)"
- * ##-----------------------------------------
- * ## Start: 1259729364.43
- * ## End: 1259729365.31
- * ## Total: 0.886390924454
- * ##-----------------------------------------
- *
- * ##-----------------------------------------
- * ## The test of "for (Write)"
- * ##-----------------------------------------
- * ## Start: 1259729365.61
- * ## End: 1259729366.65
- * ## Total: 1.03505206108
- * ##-----------------------------------------
- *
- * ##-----------------------------------------
- * ## The test of "each,list (Write)"
- * ##-----------------------------------------
- * ## Start: 1259729367.01
- * ## End: 1259729370.15
- * ## Total: 3.14639210701
- * ##-----------------------------------------
- */
Add Comment
Please, Sign In to add comment