Code Monkey home page Code Monkey logo

benchmarks-containers's Introduction

PHP Container Benchmarking Suite

Build Status

This benchmarking suite compares PHP Dependency Injection Containers. Its sort of an example project for PHPBench.

It is intended to be a base for developing a standard benchmarking suite for all of the PHP containers out there.

Including:

Note that PHPBench Container is not a "real" container, but a minimal ad-hoc call-back based container used by PHPBench itself.

Disclaimer

We take no responsiblity for the accuracy of these benchmarks. If you want to be sure of the results please clone this repository, look at the code, and run the benchmarks yourself.

If you are a container maintainer and you notice that the benchmarks are not fair, then please make a pull request.

The benchmarks do not cover all contingencies, infact they are currently quite limited. Please feel free to make pull requests as required.

Versions

aura/di                             3.1.0   A serializable dependency
injection container with constructor and setter injectio...
illuminate/container                v5.2.28 The Illuminate Container package.
league/container                    2.2.0   A fast and intuitive dependency injection container.
php-di/php-di                       5.2.2   The dependency injection container
phpbench/phpbench                   0.11.1  PHP Benchmarking Framework
pimple/pimple                       v3.0.2  Pimple, a simple Dependency
symfony/dependency-injection        v2.8.4  Symfony DependencyInjection
zendframework/zend-servicemanager   3.0.3

Results

  • All containers are expected to be optimized except in the unoptimized test.

Subjects (all executed 1000 times):

  • GetOptimizedNode: Return a shared service (expected cache effect).
  • GetUnoptimized: Return a shared service without optimization (i.e. no dumping of the container, etc).
  • GetPrototype: Return a new instance of the service.
  • Lifecycle: Instantiate the container and return a shared service.

Suite #1339f97fb7f96efa6de544e9f63f6116e81f85e2 2016-04-07 15:59:32

50 iterations, 1000 revolutions, 5 warmup revolutions, stdev < 3%

Environment

provider key value
uname os Linux
uname host dtlt410
uname release 4.2.0-1-amd64
uname version #1 SMP Debian 4.2.6-1 (2015-11-10)
uname machine x86_64
php version 7.0.3-3
unix-sysload l1 1.34
unix-sysload l5 1.16
unix-sysload l15 0.85
vcs system git
vcs branch master
vcs version ce85c2f9b04832e4a5d0e47ff1a9bf40c3b72090
baseline nothing 0.015020370483398
baseline md5 0.27108192443848
baseline file_rw 1.3530254364014

Time

benchmark benchGetOptimized benchGetUnoptimized benchGetPrototype benchLifecycle
PhpDiBench 0.330μs 0.725μs 5.726μs 23.315μs
PhpBenchBench 0.242μs 1.443μs
IlluminateBench 0.734μs 3.206μs 8.128μs
AuraDiBench 0.297μs 1.772μs 8.933μs
PimpleBench 0.419μs 1.461μs 3.728μs
SymfonyDiBench 0.433μs 0.993μs 0.873μs 3.783μs
ZendServiceManagerBench 0.266μs 1.169μs 3.439μs
LeagueBench 0.628μs 1.883μs 7.628μs

NOTE: Memory is memory_get_peak_usage after executing the operation 1000 times.

Memory

benchmark | benchGetOptimized | benchGetUnoptimized | benchGetPrototype | benchLifecycle --- | --- | --- | --- | --- | --- PhpDiBench | 1,037,152b | 991,016b | 1,037,152b | 5,881,272b PhpBenchBench | 755,912b | | | 755,224b IlluminateBench | 987,304b | | 987,312b | 986,624b AuraDiBench | 881,248b | | 881,248b | 880,560b PimpleBench | 765,040b | | 765,040b | 764,352b SymfonyDiBench | 917,720b | 1,124,856b | 917,720b | 917,032b ZendServiceManagerBench | 902,984b | | 902,984b | 2,992,944b LeagueBench | 886,144b | | 886,144b | 2,716,696b

Alternatively you may look at the latest travis build.

Run the Benchmarks

$ composer install
$ ./vendor/bin/phpbench run --report=all

or

$ ./vendor/bin/phpbench run --store
$ ./vendor/bin/phpbench show latest --report=all

For the HTML report:

$ ./vendor/bin/phpbench show latest --report=all --output=container_html

benchmarks-containers's People

Contributors

dantleech avatar harikt avatar mnapoli avatar notbakaneko avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.