<?php
function item_array_key_exists($a, $buscado) {
}
function foreach_inc($a, $buscado) {
$i=0;
foreach($a as $v)
if($buscado===$v)
$i++;
return $i;
}
$names = ['item_array_key_exists', 'foreach_inc'];
$loops = 10000;
$arr_rand_items = 500;
$arr_repeated = 3;
$a = [];
//Generar array de strings random
function generateRandomString($length = 10) {
$characters = 'abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters); $randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)]; }
return $randomString;
}
for ($i = 0; $i < $arr_rand_items; $i++)
$a[] = generateRandomString();
//Multiplicar el array
$aux = $a;
for ($i = 0; $i < $arr_repeated - 1; $i++)
$params = array($a, $item_buscado);
function speed_test($code, $loops = 500000, $params = []) {
for ($i=0 ; $i<$loops ; $i++) {
$code($params[0],$params[1]);
}
$delay = $after-$before;
return $delay;
}
$best = 999999999;
$worst = 0;
$best_num = -1;
foreach ($names as $code_num => $f)
{
$delay = speed_test($f, $loops, $params);
if ($delay < $best) {
$best = $delay;
$best_num = $code_num;
}
if ($delay > $worst) {
$worst = $delay;
}
echo "Code #" . ($code_num + 1) . "($names[$code_num]): \t" . number_format($delay, 2) . " secs/" . $loops/1E3 . "k loops\n"; }
echo "BEST: $names[$best_num] by " . number_format((1- $best / $worst) * 100, 0) . "%";
PD9waHAKZnVuY3Rpb24gaXRlbV9hcnJheV9rZXlfZXhpc3RzKCRhLCAkYnVzY2FkbykgewoJaWYoIWlzX2FycmF5KCRhKSkgcmV0dXJuIE5VTEw7Cgkkdj1hcnJheV9jb3VudF92YWx1ZXMoJGEpOwoJcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGJ1c2NhZG8sJGEpPyR2WyRidXNjYWRvXTowOwp9CmZ1bmN0aW9uIGZvcmVhY2hfaW5jKCRhLCAkYnVzY2FkbykgewoJaWYoIWlzX2FycmF5KCRhKSkgcmV0dXJuIE5VTEw7CgkkaT0wOwoJZm9yZWFjaCgkYSBhcyAkdikKCQlpZigkYnVzY2Fkbz09PSR2KQoJCQkkaSsrOwoJcmV0dXJuICRpOwp9CgoKCiRuYW1lcyA9IFsnaXRlbV9hcnJheV9rZXlfZXhpc3RzJywgJ2ZvcmVhY2hfaW5jJ107CiRsb29wcyA9IDEwMDAwOwokYXJyX3JhbmRfaXRlbXMgPSA1MDA7CiRhcnJfcmVwZWF0ZWQgPSAzOwokYSA9IFtdOwoKCgovL0dlbmVyYXIgYXJyYXkgZGUgc3RyaW5ncyByYW5kb20KZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21TdHJpbmcoJGxlbmd0aCA9IDEwKSB7CiAgICAkY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7CiAgICAkY2hhcmFjdGVyc0xlbmd0aCA9IHN0cmxlbigkY2hhcmFjdGVycyk7CiAgICAkcmFuZG9tU3RyaW5nID0gJyc7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgJHJhbmRvbVN0cmluZyAuPSAkY2hhcmFjdGVyc1tyYW5kKDAsICRjaGFyYWN0ZXJzTGVuZ3RoIC0gMSldOwogICAgfQogICAgcmV0dXJuICRyYW5kb21TdHJpbmc7Cn0KZm9yICgkaSA9IDA7ICRpIDwgJGFycl9yYW5kX2l0ZW1zOyAkaSsrKQoJJGFbXSA9IGdlbmVyYXRlUmFuZG9tU3RyaW5nKCk7CgovL011bHRpcGxpY2FyIGVsIGFycmF5CiRhdXggPSAkYTsKZm9yICgkaSA9IDA7ICRpIDwgJGFycl9yZXBlYXRlZCAtIDE7ICRpKyspCgkkYSA9IGFycmF5X21lcmdlKCRhLCAkYXV4KTsKCQokaXRlbV9idXNjYWRvID0gJGFbYXJyYXlfcmFuZCgkYSldOwoKJHBhcmFtcyA9IGFycmF5KCRhLCAkaXRlbV9idXNjYWRvKTsKCgpmdW5jdGlvbiBzcGVlZF90ZXN0KCRjb2RlLCAkbG9vcHMgPSA1MDAwMDAsICRwYXJhbXMgPSBbXSkgewoJJGJlZm9yZSA9IG1pY3JvdGltZSh0cnVlKTsKCWZvciAoJGk9MCA7ICRpPCRsb29wcyA7ICRpKyspIHsKCSAgICAkY29kZSgkcGFyYW1zWzBdLCRwYXJhbXNbMV0pOwoJfQoJJGFmdGVyID0gbWljcm90aW1lKHRydWUpOwoJJGRlbGF5ID0gJGFmdGVyLSRiZWZvcmU7CglyZXR1cm4gJGRlbGF5Owp9CiRiZXN0ID0gOTk5OTk5OTk5Owokd29yc3QgPSAwOwokYmVzdF9udW0gPSAtMTsKCgpmb3JlYWNoICgkbmFtZXMgYXMgJGNvZGVfbnVtID0+ICRmKQp7CgkkZGVsYXkgPSBzcGVlZF90ZXN0KCRmLCAkbG9vcHMsICRwYXJhbXMpOwoJaWYgKCRkZWxheSA8ICRiZXN0KSB7CgkJJGJlc3QgPSAkZGVsYXk7CgkJJGJlc3RfbnVtID0gJGNvZGVfbnVtOwoJfQoJaWYgKCRkZWxheSA+ICR3b3JzdCkgewoJCSR3b3JzdCA9ICRkZWxheTsKCX0KCWVjaG8gIkNvZGUgIyIgLiAoJGNvZGVfbnVtICsgMSkgLiAiKCRuYW1lc1skY29kZV9udW1dKTogXHQiIC4gbnVtYmVyX2Zvcm1hdCgkZGVsYXksIDIpIC4gIiBzZWNzLyIgLiAkbG9vcHMvMUUzIC4gImsgbG9vcHNcbiI7Cn0KZWNobyAiQkVTVDogJG5hbWVzWyRiZXN0X251bV0gYnkgIiAuIG51bWJlcl9mb3JtYXQoKDEtICRiZXN0IC8gJHdvcnN0KSAqIDEwMCwgMCkgLiAiJSI7