Skip to content

New DI containers added + Test updated to support newest version for some containers #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions DiMaria/test1.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

$t1 = microtime(true);

$di = new DD\DiMaria;
for ($i = 0; $i < 10000; $i++) {
$a = $di->create('A');
}

$t2 = microtime(true);

$results = [
'time' => $t2 - $t1,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
20 changes: 20 additions & 0 deletions DiMaria/test2.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

$di = new DD\DiMaria;
//trigger autoloader for all required files
$a = $di->get('A');
unset ($a);

$t1 = microtime(true);
for ($i = 0; $i < 10000; $i++) {
$a = $di->create('A');
}
$t2 = microtime(true);

$results = [
'time' => $t2 - $t1,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
20 changes: 20 additions & 0 deletions DiMaria/test3.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

$di = new DD\DiMaria;
//trigger autoloader for all required files
$a = $di->get('J');
unset ($a);

$t1 = microtime(true);
for ($i = 0; $i < 10000; $i++) {
$j = $di->create('J');
}
$t2 = microtime(true);

$results = [
'time' => $t2 - $t1,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
17 changes: 17 additions & 0 deletions DiMaria/test4.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php

$di = new DD\DiMaria;

$t1 = microtime(true);
for ($i = 0; $i < 10000; $i++) {
$j = $di->get('A');
}
$t2 = microtime(true);

$results = [
'time' => $t2 - $t1,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
19 changes: 19 additions & 0 deletions DiMaria/test5.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

$di = new DD\DiMaria;
$di->setShared('A');
$b = $di->create('B');

$t1 = microtime(true);
for ($i = 0; $i < 10000; $i++) {
$b = $di->create('B');
}
$t2 = microtime(true);

$results = [
'time' => $t2 - $t1,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
16 changes: 16 additions & 0 deletions DiMaria/test6.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

$di = new DD\DiMaria;

for ($i = 0; $i < $argv[1]; $i++) {
$j = $di->create('J');
}


$results = [
'time' => 0,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
14 changes: 14 additions & 0 deletions DiMaria/test6a.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

$di = new DD\DiMaria;
for ($i = 0; $i < $argv[1]; $i++) {
$j = $di->create('J');
}

$results = [
'time' => 0,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
36 changes: 21 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,27 @@
# DI Container Benchmarks

Containers currently tested are:
- Aura
- Auryn
- Dice
- Laravel
- Leage
- Njasm
- Phalcon
- PHP-DI
- Pimple
- Symfony DI
- Zend\Di
- Zend\Servicemanager


**Nette is currently disabled due to not working as advertised. It fails to load Nette\DI\ContainerLoader which prevents any tests being done**
- [Aura.Di](ttps://github.com/auraphp/Aura.Di)
- [Auryn](https://github.com/rdlowrey/auryn)
- [Chernozem](https://github.com/pyrsmk/Chernozem)
- [Di52](https://github.com/lucatume/di52)
- [Dice](http://r.je/dice.html)
- [DiMaria](https://github.com/dangerousdan/dimaria)
- [Joomla DI](https://github.com/joomla-framework/di)
- [Laravel](https://github.com/illuminate/container)
- [Leage](https://github.com/thephpleague/container)
- [Nette](https://github.com/nette/di)
- [Njasm](https://github.com/njasm/container)
- [Phalcon](https://docs.phalconphp.com/en/3.2/di)
- [PHP-DI](http://php-di.org/)
- [Pimple](http://pimple.sensiolabs.org)
- [Slince DI](https://github.com/slince/di)
- [Symfony DI](https://github.com/symfony/dependency-injection)
- [Unbox](https://github.com/mindplay-dk/unbox)
- [Yii2-di](http://www.yiiframework.com/doc-2.0/guide-concept-di-container.html)
- [Zend\Di](https://github.com/zendframework/zend-di)
- [Zend\Servicemanager](https://github.com/zendframework/zend-servicemanager)


**Ray.Di does not seem to work without annotations. Requiring the classes to be coupled to the container goes against the spirit of DI and as such is not tested here**

Expand Down
6 changes: 3 additions & 3 deletions aura/test1.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@


$t1 = microtime(true);
use Aura\Di\Container;
use Aura\Di\Factory;
$di = new Container(new Factory());
use Aura\Di\ContainerBuilder;
$builder = new ContainerBuilder();
$di = $builder->newInstance();
$di->set('A', $di->lazyNew('A'));

for ($i = 0; $i < 10000; $i++) {
Expand Down
6 changes: 3 additions & 3 deletions aura/test2.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?php


use Aura\Di\Container;
use Aura\Di\Factory;
$di = new Container(new Factory());
use Aura\Di\ContainerBuilder;
$builder = new ContainerBuilder();
$di = $builder->newInstance();
$di->set('A', $di->lazyNew('A'));


Expand Down
6 changes: 3 additions & 3 deletions aura/test3.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?php


use Aura\Di\Container;
use Aura\Di\Factory;
$di = new Container(new Factory());
use Aura\Di\ContainerBuilder;
$builder = new ContainerBuilder();
$di = $builder->newInstance();


$di->params['J'] = ['i' => $di->lazyNew('I')];
Expand Down
6 changes: 3 additions & 3 deletions aura/test4.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php

use Aura\Di\Container;
use Aura\Di\Factory;
$di = new Container(new Factory());
use Aura\Di\ContainerBuilder;
$builder = new ContainerBuilder();
$di = $builder->newInstance();

$di->set('A', $di->lazyNew('A'));

Expand Down
8 changes: 4 additions & 4 deletions aura/test5.php
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<?php

use Aura\Di\Container;
use Aura\Di\Factory;
$di = new Container(new Factory());
use Aura\Di\ContainerBuilder;
$builder = new ContainerBuilder();
$di = $builder->newInstance();


$di->set('A', $di->lazyNew('A'));
$di->params['B'] = ['a' => $di->lazyNew('A')];
$di->set('B', $di->lazyNew('B'));

$di->params['B'] = ['a' => $di->get('A')];

//Trigger the autoloader before measuring execution time
$a = $di->newinstance('B');
Expand Down
6 changes: 3 additions & 3 deletions aura/test6.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php

use Aura\Di\Container;
use Aura\Di\Factory;
$di = new Container(new Factory());
use Aura\Di\ContainerBuilder;
$builder = new ContainerBuilder();
$di = $builder->newInstance();


$di->params['J'] = ['i' => $di->lazyNew('I')];
Expand Down
6 changes: 3 additions & 3 deletions aura/test6a.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php

use Aura\Di\Container;
use Aura\Di\Factory;
$di = new Container(new Factory());
use Aura\Di\ContainerBuilder;
$builder = new ContainerBuilder();
$di = $builder->newInstance();


$di->params['J'] = ['i' => $di->lazyNew('I')];
Expand Down
14 changes: 14 additions & 0 deletions auryn/test6.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

$injector = new Auryn\Injector;
for ($i = 0; $i < 10000; $i++) {
$a = $injector->make('J');
}

$results = [
'time' => 0,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
14 changes: 14 additions & 0 deletions auryn/test6a.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

$injector = new Auryn\Injector;
for ($i = 0; $i < 10000; $i++) {
$a = $injector->make('J');
}

$results = [
'time' => 0,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
21 changes: 21 additions & 0 deletions chernozem/test1.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

$t1 = microtime(true);

$chernozem = new Chernozem\Container();
$chernozem['A'] = $chernozem->factory(function($chernozem) {
return new A();
});
for ($i = 0; $i < 10000; $i++) {
$a = $chernozem['A'];
}

$t2 = microtime(true);

$results = [
'time' => $t2 - $t1,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
23 changes: 23 additions & 0 deletions chernozem/test2.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

$chernozem = new Chernozem\Container();
$chernozem['A'] = $chernozem->factory(function($chernozem) {
return new A();
});
//trigger autoloader for all required files
$a = $chernozem['A'];
unset ($a);

$t1 = microtime(true);
for ($i = 0; $i < 10000; $i++) {
$a = $chernozem['A'];
}
$t2 = microtime(true);

$results = [
'time' => $t2 - $t1,
'files' => count(get_included_files()),
'memory' => memory_get_peak_usage()/1024/1024
];

echo json_encode($results);
Loading