Skip to content

Instantly share code, notes, and snippets.

@gong023
Created December 4, 2015 05:26
Show Gist options
  • Save gong023/57e0304bc5ace09cda5d to your computer and use it in GitHub Desktop.
Save gong023/57e0304bc5ace09cda5d to your computer and use it in GitHub Desktop.
bench
<?php
require_once __DIR__ . '/vendor/autoload.php';
class TurmericSample
{
use \TurmericSpice\ReadWriteAttributes {
mayHaveAsInt as public getId;
mayHaveAsFloat as public getBalance;
mayHaveAsString as public getName;
setValue as public setId;
setValue as public setBalance;
setValue as public setName;
}
}
class MagicSample
{
use MagicSpice\ClassHelper, MagicSpice\ClassHelper\Accessor\Set {
getInt as public getId;
getFloat as public getBalance;
getString as public getName;
setIntOrNull as public setId;
setFloatOrNull as public setBalance;
setStringOrNull as public setName;
}
}
$turmericSample = new TurmericSample([
'id' => 1,
'balance' => 10.0,
'name' => 'name',
]);
$magicSample = new MagicSample([
'id' => 1,
'balance' => 10.0,
'name' => 'name',
]);
$testCount = 100000;
echo '====setterなし====' . PHP_EOL;
$turmericStartWithoutSetter = microtime(true);
for ($i = 0; $i < $testCount; $i++) {
$turmericSample->getId();
$turmericSample->getBalance();
$turmericSample->getName();
}
$turmericEndWithoutSetter = microtime(true);
echo 'turmeric spice:';
echo $turmericEndWithoutSetter - $turmericStartWithoutSetter . PHP_EOL;
$magicStart = microtime(true);
for ($i = 0; $i < $testCount; $i++) {
$magicSample->getId();
$magicSample->getBalance();
$magicSample->getName();
}
$magicEnd = microtime(true);
echo 'MagicSpice:';
echo $magicEnd - $magicStart . PHP_EOL;
echo '====setterあり====' . PHP_EOL;
$turmericStart = microtime(true);
for ($i = 0; $i < $testCount; $i++) {
$turmericSample->setId($i);
$turmericSample->setBalance((float)$i);
$turmericSample->setName((string)$i);
$turmericSample->getId();
$turmericSample->getBalance();
$turmericSample->getName();
}
$turmericEnd = microtime(true);
echo 'turmeric spice:';
echo $turmericEnd - $turmericStart . PHP_EOL;
$magicStart = microtime(true);
for ($i = 0; $i < $testCount; $i++) {
$magicSample->setId($i);
$magicSample->setBalance((float)$i);
$magicSample->setName((string)$i);
$magicSample->setId($i);
$magicSample->getId();
$magicSample->getBalance();
$magicSample->getName();
}
$magicEnd = microtime(true);
echo 'MagicSpice:';
echo $magicEnd - $magicStart;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment