Skip to content

Instantly share code, notes, and snippets.

@sarciszewski
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sarciszewski/9076834 to your computer and use it in GitHub Desktop.
Save sarciszewski/9076834 to your computer and use it in GitHub Desktop.
SO Benchmark 2 v2
<?php
// My original function
function max_length($array) {
$max = 0;
foreach($array as $child) {
if(count($child) > $max) {
$max = count($child);
}
}
return $max;
}
// From Stack Overflow
function max_length_so($input_arr) {
$counts = array_map('count', $input_arr);
$key = array_flip($counts)[max($counts)];
return count($input_arr[$key]);
}
$dataset = [
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,30), 'a'),
array_fill(0, mt_rand(2,30), 'b'),
array_fill(0, mt_rand(2,30), 'c'),
array_fill(0, mt_rand(2,30), 'd'),
array_fill(0, mt_rand(2,30), 'e'),
array_fill(0, mt_rand(1,50), 'f'),
array_fill(0, mt_rand(2,30), 'g'),
array_fill(0, mt_rand(2,30), 'h'),
['i'],
array_fill(0, mt_rand(30,55), 'j'),
array_fill(0, mt_rand(1,80), 'k'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'),
array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x'), array_fill(0, mt_rand(2,20), 'x')
];
$start = microtime(1);
for($i = 0; $i < 1000; ++$i) {
$x = max_length($dataset);
}
$end = microtime(1);
echo "Naive solution:\n";
echo "Result {$x} calculated in " . ( $end - $start) . " seconds.\n";
$start = microtime(1);
for($i = 0; $i < 1000; ++$i) {
$x = max_length_so($dataset);
}
$end = microtime(1);
echo "Stack Overflow:\n";
echo "Result {$x} calculated in " . ( $end - $start) . " seconds.\n";
/*
sarciszewski@devbox /var/www $ php benchmark.php
Naive solution:
Result 47 calculated in 0.049511909484863 seconds.
Stack Overflow:
Result 47 calculated in 0.081145048141479 seconds.
sarciszewski@devbox /var/www $ php benchmark.php
Naive solution:
Result 76 calculated in 0.054126977920532 seconds.
Stack Overflow:
Result 76 calculated in 0.08296012878418 seconds.
sarciszewski@devbox /var/www $ php benchmark.php
Naive solution:
Result 50 calculated in 0.048227071762085 seconds.
Stack Overflow:
Result 50 calculated in 0.080794811248779 seconds.
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment