1
0
mirror of synced 2025-02-03 05:49:25 +03:00
doctrine2/tests/Doctrine/Performance/Hydration/SimpleQueryScalarHydrationPerformanceBench.php
2017-07-23 10:16:28 +02:00

84 lines
2.2 KiB
PHP

<?php
namespace Doctrine\Performance\Hydration;
use Doctrine\ORM\Internal\Hydration\ScalarHydrator;
use Doctrine\ORM\Query;
use Doctrine\ORM\Query\ResultSetMapping;
use Doctrine\Performance\EntityManagerFactory;
use Doctrine\Tests\Mocks\HydratorMockStatement;
use Doctrine\Tests\Models\CMS\CmsUser;
use PhpBench\Benchmark\Metadata\Annotations\BeforeMethods;
/**
* @BeforeMethods({"init"})
*/
final class SimpleQueryScalarHydrationPerformanceBench
{
/**
* @var ScalarHydrator
*/
private $hydrator;
/**
* @var ResultSetMapping
*/
private $rsm;
/**
* @var HydratorMockStatement
*/
private $stmt;
public function init()
{
$entityManager = EntityManagerFactory::getEntityManager([]);
$resultSet = [
[
'u__id' => '1',
'u__status' => 'developer',
'u__username' => 'romanb',
'u__name' => 'Roman',
],
[
'u__id' => '1',
'u__status' => 'developer',
'u__username' => 'romanb',
'u__name' => 'Roman',
],
[
'u__id' => '2',
'u__status' => 'developer',
'u__username' => 'romanb',
'u__name' => 'Roman',
]
];
for ($i = 4; $i < 10000; ++$i) {
$resultSet[] = [
'u__id' => $i,
'u__status' => 'developer',
'u__username' => 'jwage',
'u__name' => 'Jonathan',
];
}
$this->stmt = new HydratorMockStatement($resultSet);
$this->hydrator = new ScalarHydrator($entityManager);
$this->rsm = new ResultSetMapping;
$this->rsm->addEntityResult(CmsUser::class, 'u');
$this->rsm->addFieldResult('u', 'u__id', 'id');
$this->rsm->addFieldResult('u', 'u__status', 'status');
$this->rsm->addFieldResult('u', 'u__username', 'username');
$this->rsm->addFieldResult('u', 'u__name', 'name');
}
public function benchHydration()
{
$this->hydrator->hydrateAll($this->stmt, $this->rsm);
}
}