Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- set_time_limit(0);
- define('NUMBER_OF_TESTS', 5000);
- define('ARRAY_SIZE', 200);
- function quicksort( $array )
- {
- $cur = 1;
- $stack[1]['l'] = 0;
- $stack[1]['r'] = count($array)-1;
- do
- {
- $l = $stack[$cur]['l'];
- $r = $stack[$cur]['r'];
- $cur--;
- do
- {
- $i = $l;
- $j = $r;
- $tmp = $array[(int)( ($l+$r)/2 )][1];
- do
- {
- while ( $array[$i][1] < $tmp )
- $i++;
- while ( $tmp < $array[$j][1] )
- $j--;
- if ( $i <= $j )
- {
- $w = $array[$i];
- $array[$i] = $array[$j];
- $array[$j] = $w;
- $i++;
- $j--;
- }
- } while ( $i <= $j );
- if ( $i < $r )
- {
- $cur++;
- $stack[$cur]['l'] = $i;
- $stack[$cur]['r'] = $r;
- }
- $r = $j;
- } while( $l < $r );
- } while( $cur != 0 );
- return $array;
- }
- function microtime_float()
- {
- return microtime(true);
- }
- function set(&$array)
- {
- for ($i = 0; $i<ARRAY_SIZE; $i++)
- {
- $array[$i][0] = "user ".$i;
- $array[$i][1] = rand(10, 100);
- }
- }
- echo "<pre>";
- // ----------
- $time = microtime_float();
- set($array);
- $time = microtime_float()-$time;
- $settime = ($time*NUMBER_OF_TESTS)/2;
- // ----------
- function usort_function($a, $b)
- {
- return ($a[1] == $b[1]) ? 0 : ($a[1] < $b[1]) ? -1 : 1;
- }
- $time = microtime_float();
- for ($i = 1; $i<NUMBER_OF_TESTS; $i++)
- {
- if ($i&1)
- set($array);
- usort($array, 'usort_function');
- }
- $time = microtime_float()-$time;
- echo "usort: ".$time."-".$settime."=<br>".($time-$settime)."<br>";
- echo "<br>";
- // ----------
- $time = microtime_float();
- for ($i = 1; $i<NUMBER_OF_TESTS; $i++)
- {
- if ($i&1)
- set($array);
- $array = quicksort($array);
- }
- $time = microtime_float()-$time;
- echo "quicksort: ".$time."-".$settime."=<br>".($time-$settime)."<br>";
- echo "</pre>";
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement