Skip to content
This repository has been archived by the owner on Feb 6, 2020. It is now read-only.

Feature: ReflectionBasedAbstractFactory #153

Merged
12 changes: 12 additions & 0 deletions benchmarks/BenchAsset/Dependency.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php
/**
* @link http://github.com/zendframework/zend-servicemanager for the canonical source repository
* @copyright Copyright (c) 2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace ZendBench\ServiceManager\BenchAsset;

class Dependency
{
}
21 changes: 21 additions & 0 deletions benchmarks/BenchAsset/ServiceDependingOnConfig.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php
/**
* @link http://github.com/zendframework/zend-servicemanager for the canonical source repository
* @copyright Copyright (c) 2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace ZendBench\ServiceManager\BenchAsset;

class ServiceDependingOnConfig
{
/**
* @var array
*/
private $config;

public function __construct(array $config)
{
$this->config = $config;
}
}
24 changes: 24 additions & 0 deletions benchmarks/BenchAsset/ServiceWithDependency.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php
/**
* @link http://github.com/zendframework/zend-servicemanager for the canonical source repository
* @copyright Copyright (c) 2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace ZendBench\ServiceManager\BenchAsset;

class ServiceWithDependency
{
/**
* @var Dependency
*/
private $dependency;

/**
* @param Dependency $dependency
*/
public function __construct(Dependency $dependency)
{
$this->dependency = $dependency;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<?php
/**
* @link http://github.com/zendframework/zend-servicemanager for the canonical source repository
* @copyright Copyright (c) 2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace ZendBench\ServiceManager;

use PhpBench\Benchmark\Metadata\Annotations\Iterations;
use PhpBench\Benchmark\Metadata\Annotations\Revs;
use PhpBench\Benchmark\Metadata\Annotations\Warmup;
use Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory;
use Zend\ServiceManager\ServiceManager;

/**
* @Revs(1000)
* @Iterations(10)
* @Warmup(2)
*/
class FetchNewServiceUsingConfigAbstractFactoryAsFactoryBench
{
/**
* @var ServiceManager
*/
private $sm;

public function __construct()
{
$this->sm = new ServiceManager([
'services' => [
'config' => [
ConfigAbstractFactory::class => [
BenchAsset\Dependency::class => [],
BenchAsset\ServiceWithDependency::class => [
BenchAsset\Dependency::class,
],
BenchAsset\ServiceDependingOnConfig::class => [
'config',
],
],
],
],
'factories' => [
BenchAsset\Dependency::class => ConfigAbstractFactory::class,
BenchAsset\ServiceWithDependency::class => ConfigAbstractFactory::class,
BenchAsset\ServiceDependingOnConfig::class => ConfigAbstractFactory::class,
],
]);
}

public function benchFetchServiceWithNoDependencies()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\Dependency::class);
}

public function benchBuildServiceWithNoDependencies()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\Dependency::class);
}

public function benchFetchServiceDependingOnConfig()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\ServiceDependingOnConfig::class);
}

public function benchBuildServiceDependingOnConfig()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\ServiceDependingOnConfig::class);
}

public function benchFetchServiceWithDependency()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\ServiceWithDependency::class);
}

public function benchBuildServiceWithDependency()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\ServiceWithDependency::class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php
/**
* @link http://github.com/zendframework/zend-servicemanager for the canonical source repository
* @copyright Copyright (c) 2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace ZendBench\ServiceManager;

use PhpBench\Benchmark\Metadata\Annotations\Iterations;
use PhpBench\Benchmark\Metadata\Annotations\Revs;
use PhpBench\Benchmark\Metadata\Annotations\Warmup;
use Zend\ServiceManager\AbstractFactory\ReflectionBasedAbstractFactory;
use Zend\ServiceManager\ServiceManager;

/**
* @Revs(1000)
* @Iterations(10)
* @Warmup(2)
*/
class FetchNewServiceUsingReflectionAbstractFactoryAsFactoryBench
{
/**
* @var ServiceManager
*/
private $sm;

public function __construct()
{
$this->sm = new ServiceManager([
'services' => [
'config' => [],
],
'factories' => [
BenchAsset\Dependency::class => ReflectionBasedAbstractFactory::class,
BenchAsset\ServiceWithDependency::class => ReflectionBasedAbstractFactory::class,
BenchAsset\ServiceDependingOnConfig::class => ReflectionBasedAbstractFactory::class,
],
]);
}

public function benchFetchServiceWithNoDependencies()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\Dependency::class);
}

public function benchBuildServiceWithNoDependencies()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\Dependency::class);
}

public function benchFetchServiceDependingOnConfig()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\ServiceDependingOnConfig::class);
}

public function benchBuildServiceDependingOnConfig()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\ServiceDependingOnConfig::class);
}

public function benchFetchServiceWithDependency()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\ServiceWithDependency::class);
}

public function benchBuildServiceWithDependency()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\ServiceWithDependency::class);
}
}
91 changes: 91 additions & 0 deletions benchmarks/FetchNewServiceViaConfigAbstractFactoryBench.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<?php
/**
* @link http://github.com/zendframework/zend-servicemanager for the canonical source repository
* @copyright Copyright (c) 2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

namespace ZendBench\ServiceManager;

use PhpBench\Benchmark\Metadata\Annotations\Iterations;
use PhpBench\Benchmark\Metadata\Annotations\Revs;
use PhpBench\Benchmark\Metadata\Annotations\Warmup;
use Zend\ServiceManager\AbstractFactory\ConfigAbstractFactory;
use Zend\ServiceManager\ServiceManager;

/**
* @Revs(1000)
* @Iterations(10)
* @Warmup(2)
*/
class FetchNewServiceViaConfigAbstractFactoryBench
{
/**
* @var ServiceManager
*/
private $sm;

public function __construct()
{
$this->sm = new ServiceManager([
'services' => [
'config' => [
ConfigAbstractFactory::class => [
BenchAsset\Dependency::class => [],
BenchAsset\ServiceWithDependency::class => [
BenchAsset\Dependency::class,
],
BenchAsset\ServiceDependingOnConfig::class => [
'config',
],
],
],
],
'abstract_factories' => [
ConfigAbstractFactory::class,
],
]);
}

public function benchFetchServiceWithNoDependencies()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\Dependency::class);
}

public function benchBuildServiceWithNoDependencies()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\Dependency::class);
}

public function benchFetchServiceDependingOnConfig()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\ServiceDependingOnConfig::class);
}

public function benchBuildServiceDependingOnConfig()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\ServiceDependingOnConfig::class);
}

public function benchFetchServiceWithDependency()
{
$sm = clone $this->sm;

$sm->get(BenchAsset\ServiceWithDependency::class);
}

public function benchBuildServiceWithDependency()
{
$sm = clone $this->sm;

$sm->build(BenchAsset\ServiceWithDependency::class);
}
}
Loading