Last active
September 21, 2018 21:47
-
-
Save sarciszewski/9076640 to your computer and use it in GitHub Desktop.
SO Benchmark v2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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) { | |
$count = array_map('count', $input_arr); | |
$min = array_keys($count , max($count))[0]; | |
return count($input_arr[$min]); | |
} | |
$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 43 calculated in 0.054464101791382 seconds. | |
Stack Overflow: | |
Result 43 calculated in 0.10535097122192 seconds. | |
sarciszewski@devbox /var/www $ php benchmark.php | |
Naive solution: | |
Result 50 calculated in 0.049144983291626 seconds. | |
Stack Overflow: | |
Result 50 calculated in 0.075643062591553 seconds. | |
sarciszewski@devbox /var/www $ php benchmark.php | |
Naive solution: | |
Result 48 calculated in 0.048748970031738 seconds. | |
Stack Overflow: | |
Result 48 calculated in 0.077173948287964 seconds. | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment