<?php
/**
* @Author Anton Zinovyev
*/
namespace xobotyi\benchmarks;
include_once __DIR__ . '/../vendor/autoload.php';
use Arrayy\Arrayy;
use xobotyi\A;
$arr = [
"this" => [
"is" => [
"quite" => [
"simple" => [
"benchmark" => "yeee!",
"nullval" => null,
],
"hard" => function () {
},
"super.hard" => "benchmark",
],
],
],
];
echo "Test array:\n" . print_r($arr, true);
echo "\n\n\n# voku/arrayy: \n";
echo "\nGet result [this.is.quite.simple.benchmark]: " . Arrayy::create($arr)
->get('this.is.quite.simple.benchmark', 'default value');
echo "\nGet result [this.is.quite.simple.nullval]: " . Arrayy::create($arr)
->get('this.is.quite.simple.nullval', 'default value');
echo "\nGet result [this.is.quite.hard.benchmark]: FAILS WITH FATAL ERROR";
# Id you'll uncomment it it will fail with fatal
// . Arrayy::create($arr)->get('this.is.quite.hard.benchmark', 'default value');
echo "\nGet result [this.is.quite.super\\.hard]: " . Arrayy::create($arr)
->get('this.is.quite.super\\.hard', 'default value');
$repeats = 100000;
#bench
echo "\n\n" . 'GET with Arrayy\\Arrayy object prepared [$arrayy->get(\'this.is.quite.simple.benchmark\')] (' . $repeats . ' repeats): ';
$arrayy = Arrayy::create($arr);
$start = microtime(true);
for ($i = 0; $i < $repeats; $i++) {
$arrayy->get('this.is.quite.simple.benchmark');
}
echo(microtime(true) - $start);
echo "\n" . 'SET with Arrayy\\Arrayy object prepared [$arrayy->set(\'this.is.quite.simple.benchmark\', \'test!\')] (' . $repeats . ' repeats): ';
$arrayy = Arrayy::create($arr);
$start = microtime(true);
for ($i = 0; $i < $repeats; $i++) {
$arrayy->set('this.is.quite.simple.benchmark', 'test!');
}
echo(microtime(true) - $start);
echo "\n\n\n# adbario/php-dot-notation: \n";
echo "\nGet result [this.is.quite.simple.benchmark]: " . dot($arr)->get('this.is.quite.simple.benchmark', 'default value');
echo "\nGet result [this.is.quite.simple.nullval]: " . dot($arr)->get('this.is.quite.simple.nullval', 'default value');
echo "\nGet result [this.is.quite.hard.benchmark]: " . dot($arr)->get('this.is.quite.hard.benchmark', 'default value');
echo "\nGet result [this.is.quite.super\\.hard]: " . dot($arr)->get('this.is.quite.super\\.hard', 'default value');
#bench
echo "\n\n" . 'GET with Adbar\\Dot object prepared [$dot->get($arr, \'this.is.quite.simple.benchmark\')] (' . $repeats . ' repeats): ';
$start = microtime(true);
$dot = dot($arr);
for ($i = 0; $i < $repeats; $i++) {
$dot->get('this.is.quite.simple.benchmark');
}
echo(microtime(true) - $start);
echo "\n" . 'SET with Adbar\\Dot object prepared [$dot->set($arr, \'this.is.quite.simple.benchmark\', \'test!\')] (' . $repeats . ' repeats): ';
$start = microtime(true);
$dot = dot($arr);
for ($i = 0; $i < $repeats; $i++) {
$dot->set('this.is.quite.simple.benchmark', 'test!');
}
echo(microtime(true) - $start);
echo "\n\n\n# xobotyi/dotarray: \n";
echo "\nGet result [this.is.quite.simple.benchmark]: " . A::get($arr, 'this.is.quite.simple.benchmark', 'default value');
echo "\nGet result [this.is.quite.simple.nullval]: " . A::get($arr, 'this.is.quite.simple.nullval', 'default value');
echo "\nGet result [this.is.quite.hard.benchmark]: " . A::get($arr, 'this.is.quite.hard.benchmark', 'default value');
echo "\nGet result [this.is.quite.super\\.hard]: " . A::get($arr, 'this.is.quite.super\\.hard', 'default value');
#bench
echo "\n\n" . 'GET with static A::get [A::get($arr, \'this.is.quite.simple.benchmark\')] (' . $repeats . ' repeats) $safeSeparationMode=true: ';
$start = microtime(true);
for ($i = 0; $i < $repeats; $i++) {
A::get($arr, 'this.is.quite.simple.benchmark');
}
echo(microtime(true) - $start);
echo "\n" . 'SET with static A::get [A::set($arr, \'this.is.quite.simple.benchmark\', \'test!\')] (' . $repeats . ' repeats) $safeSeparationMode=true: ';
$start = microtime(true);
for ($i = 0; $i < $repeats; $i++) {
A::set($arr, 'this.is.quite.simple.benchmark', 'test!');
}
echo(microtime(true) - $start);
echo "\n\n" . 'GET with static A::get [A::get($arr, \'this.is.quite.simple.benchmark\')] (' . $repeats . ' repeats) $safeSeparationMode=false: ';
A::SetSafeSeparationMode(false);
$start = microtime(true);
for ($i = 0; $i < $repeats; $i++) {
A::get($arr, 'this.is.quite.simple.benchmark');
}
echo(microtime(true) - $start);
echo "\n" . 'SET with static A::get [A::set($arr, \'this.is.quite.simple.benchmark\', \'test!\')] (' . $repeats . ' repeats) $safeSeparationMode=false: ';
$start = microtime(true);
for ($i = 0; $i < $repeats; $i++) {
A::set($arr, 'this.is.quite.simple.benchmark', 'test!');
}
echo(microtime(true) - $start);
|