1
0
mirror of synced 2025-02-03 13:59:27 +03:00
doctrine2/tests/Doctrine/Performance/Hydration/SimpleQueryScalarHydrationPerformanceBench.php

82 lines
2.2 KiB
PHP
Raw Normal View History

2016-05-26 20:49:56 +02:00
<?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()
{
$resultSet = [
[
2016-05-26 20:57:50 +02:00
'u__id' => '1',
'u__status' => 'developer',
2016-05-26 20:49:56 +02:00
'u__username' => 'romanb',
2016-05-26 20:57:50 +02:00
'u__name' => 'Roman',
2016-05-26 20:49:56 +02:00
],
[
2016-05-26 20:57:50 +02:00
'u__id' => '1',
'u__status' => 'developer',
2016-05-26 20:49:56 +02:00
'u__username' => 'romanb',
2016-05-26 20:57:50 +02:00
'u__name' => 'Roman',
2016-05-26 20:49:56 +02:00
],
[
2016-05-26 20:57:50 +02:00
'u__id' => '2',
'u__status' => 'developer',
2016-05-26 20:49:56 +02:00
'u__username' => 'romanb',
2016-05-26 20:57:50 +02:00
'u__name' => 'Roman',
2016-05-26 20:49:56 +02:00
]
];
for ($i = 4; $i < 10000; ++$i) {
$resultSet[] = [
2016-05-26 20:57:50 +02:00
'u__id' => $i,
'u__status' => 'developer',
2016-05-26 20:49:56 +02:00
'u__username' => 'jwage',
2016-05-26 20:57:50 +02:00
'u__name' => 'Jonathan',
2016-05-26 20:49:56 +02:00
];
}
$this->stmt = new HydratorMockStatement($resultSet);
$this->hydrator = new ScalarHydrator(EntityManagerFactory::getEntityManager([]));
2016-05-26 20:49:56 +02:00
$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');
}
2016-05-26 21:04:35 +02:00
public function benchHydration()
2016-05-26 20:49:56 +02:00
{
$this->hydrator->hydrateAll($this->stmt, $this->rsm);
}
}