3v4l.org

run code in 300+ PHP versions simultaneously
<?php function compareA($a, $b) { return strcmp(json_encode($a), json_encode($b)); } function compareB($a, $b) { return strcmp(implode(',', $a), implode(',', $b)); } function array_diff_multi($a, $b) { return array_map('json_decode', array_diff(array_map('json_encode', $a), array_map('json_encode', $b))); } function bench_diff($a, $b, $callback) { for ($i = 0; $i < 1000; $i++) { $c = array_udiff($a, $b, $callback); } $start = microtime(true); for ($i = 0; $i < 1000; $i++) { $c = array_udiff($a, $b, $callback); } $end = microtime(true); echo $callback, "\t", ($end - $start) * 1000, ' ms', PHP_EOL; return $c; } $a = array( array('localhost', 11211, 0), array('localhost', 11211, 0), array('localhost', 11212, 0), array('localhost', 11213, 0), array('localhost', 11214, 0), array('localhost', 11214, 0), array('localhost', 11214, 0), array('localhost', 11212, 0), array('other', 11211, 0), array('localhost', 11211, 0), ); $b = array( array('localhost', 11211, 0), array('other', 11211, 0), array('other', 11212, 0), array('localhost', 11212, 0), array('localhost', 11212, 0), array('localhost', 11213, 0), ); $c = bench_diff($a, $b, 'compareA'); $c = bench_diff($a, $b, 'compareB'); for ($i = 0; $i < 1000; $i++) { $c = array_diff_multi($a, $b); } $start = microtime(true); for ($i = 0; $i < 1000; $i++) { $c = array_diff_multi($a, $b); } $end = microtime(true); echo "diff-json\t", ($end - $start) * 1000, ' ms', PHP_EOL; var_export($c);

preferences:
33.44 ms | 402 KiB | 5 Q