public function testForReadme()
{
$times = 10000;
$this->_data = array('prop' => uniqid('', true), 'prop1' => uniqid('', true), 'prop2' => uniqid('', true), 'prop3' => uniqid('', true), 'prop4' => uniqid('', true), 'inner' => array('prop' => uniqid('', true), 'prop1' => uniqid('', true), 'prop2' => uniqid('', true), 'prop3' => uniqid('', true), 'prop4' => uniqid('', true), 'inner' => array('prop' => uniqid('', true), 'prop1' => uniqid('', true), 'prop2' => uniqid('', true), 'prop3' => uniqid('', true), 'prop4' => uniqid('', true))));
$array = $this->_data;
$data = new Data($this->_data);
$arrobj = new \ArrayObject($this->_data);
Benchmark::compare(array('Array' => function () use($array) {
$var = $array;
// for clean experiment
return $var;
}, 'ArrayObject' => function () use($array) {
$var = new \ArrayObject($array);
return $var;
}, 'Data' => function () use($array) {
$var = new Data($array);
return $var;
}), array('name' => 'For Readme: Create', 'count' => $times));
Benchmark::compare(array('Array' => function () use($array) {
return array_key_exists('prop', $array) ? $array['prop'] : null;
}, 'ArrayObject' => function () use($arrobj) {
return $arrobj->offsetGet('prop');
}, 'Data' => function () use($data) {
return $data->get('prop');
}), array('name' => 'For Readme: Get by key', 'count' => $times));
Benchmark::compare(array('Array' => function () use($array) {
if (array_key_exists('inner', $array) && array_key_exists('inner', $array['inner']) && array_key_exists('prop', $array['inner']['inner'])) {
return $array['inner']['inner']['prop'];
}
return 42;
}, 'ArrayObject' => function () use($arrobj) {
if (array_key_exists('inner', $arrobj) && array_key_exists('inner', $arrobj['inner']) && array_key_exists('prop', $arrobj['inner']['inner'])) {
return $arrobj['inner']['inner']['prop'];
}
return 42;
}, 'Data' => function () use($data) {
return $data->find('inner.inner.prop', 42);
}), array('name' => 'For Readme: Find nested defined var', 'count' => $times));
Benchmark::compare(array('Array' => function () use($array) {
if (array_key_exists('inner', $array) && array_key_exists('inner', $array['inner']) && array_key_exists('undefined', $array['inner']['inner'])) {
return $array['inner']['inner']['prop'];
}
return 42;
}, 'ArrayObject' => function () use($arrobj) {
if (array_key_exists('inner', $arrobj) && array_key_exists('inner', $arrobj['inner']) && array_key_exists('undefined', $arrobj['inner']['inner'])) {
return $arrobj['inner']['inner']['undefined'];
}
return 42;
}, 'Data' => function () use($data) {
return $data->find('inner.inner.undefined', 42);
}), array('name' => 'For Readme: Find nested undefined var', 'count' => $times));
}