From b2b69b34bbaebeec630d0e6da8b18af9445caf82 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Mon, 20 Aug 2018 22:14:52 +0300 Subject: [PATCH 1/3] Add benchmark of Factory provider --- docs/main/changelog.rst | 4 ++ tests/performance/factory_benchmark_1.py | 90 ++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 tests/performance/factory_benchmark_1.py diff --git a/docs/main/changelog.rst b/docs/main/changelog.rst index b4d07bca..eed71f09 100644 --- a/docs/main/changelog.rst +++ b/docs/main/changelog.rst @@ -7,6 +7,10 @@ that were made in every particular version. From version 0.7.6 *Dependency Injector* framework strictly follows `Semantic versioning`_ +Development version +------------------- +- Add additional benchmark of ``Factory`` provider. + 3.13.1 ------ - Fix typo on "Chained Factories" pattern docs page. diff --git a/tests/performance/factory_benchmark_1.py b/tests/performance/factory_benchmark_1.py new file mode 100644 index 00000000..95d42e59 --- /dev/null +++ b/tests/performance/factory_benchmark_1.py @@ -0,0 +1,90 @@ +"""Dependency Injector Factory providers benchmark.""" + +import time + +from dependency_injector import providers + + +N = 1000000 + + +class A(object): + pass + + +class B(object): + pass + + +class C(object): + pass + + +class Test(object): + def __init__(self, a, b, c): + self.a = a + self.b = b + self.c = c + + +# Testing Factory provider + +test_factory_provider = providers.Factory( + Test, + a=providers.Factory(A), + b=providers.Factory(B), + c=providers.Factory(C), +) + +start = time.time() +for _ in range(1, N): + test_factory_provider() +finish = time.time() + +print(finish - start) + + +# Testing simple analog + +def test_simple_factory_provider(): + return Test(a=A(), b=B(), c=C()) + + +start = time.time() +for _ in range(1, N): + test_simple_factory_provider() +finish = time.time() + +print(finish - start) + +# ------ +# Result +# ------ +# +# Python 2.7 +# +# $ python tests/performance/factory_benchmark_1.py +# 0.87456202507 +# 0.879760980606 +# +# $ python tests/performance/factory_benchmark_1.py +# 0.949290990829 +# 0.853044986725 +# +# $ python tests/performance/factory_benchmark_1.py +# 0.964688062668 +# 0.857432842255 +# +# Python 3.7.0 +# +# $ python tests/performance/factory_benchmark_1.py +# 1.1037120819091797 +# 0.999565839767456 +# +# $ python tests/performance/factory_benchmark_1.py +# 1.0855588912963867 +# 1.0008318424224854 +# +# $ python tests/performance/factory_benchmark_1.py +# 1.0706679821014404 +# 1.0106139183044434 From bd855ace582da5d54901d252b1524b7a4fc88cfd Mon Sep 17 00:00:00 2001 From: Tobias Happ Date: Sun, 2 Sep 2018 19:54:06 +0200 Subject: [PATCH 2/3] Adds tests in MANIFEST.in (#204) --- MANIFEST.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MANIFEST.in b/MANIFEST.in index bb14403d..69c8a787 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,8 @@ recursive-include src/dependency_injector *.py *.pyx *.pxd *.c +recursive-include tests *.py include README.rst include CONTRIBUTORS.rst include LICENSE.rst include requirements.txt include setup.py +include tox.ini From b3a6aeae4101a5cc53f34498e8bc59e0db1414ff Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Sun, 2 Sep 2018 21:01:19 +0300 Subject: [PATCH 3/3] Bump version to 3.13.2 --- docs/main/changelog.rst | 7 +++++-- src/dependency_injector/__init__.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/main/changelog.rst b/docs/main/changelog.rst index eed71f09..444b35e9 100644 --- a/docs/main/changelog.rst +++ b/docs/main/changelog.rst @@ -7,9 +7,12 @@ that were made in every particular version. From version 0.7.6 *Dependency Injector* framework strictly follows `Semantic versioning`_ -Development version -------------------- +3.13.2 +------ - Add additional benchmark of ``Factory`` provider. +- Add tests and tox.ini to the distribution, so that they could be used after + package is installed (thanks to + `Tobias Happ `_). 3.13.1 ------ diff --git a/src/dependency_injector/__init__.py b/src/dependency_injector/__init__.py index 5c97a1fc..c19c3797 100644 --- a/src/dependency_injector/__init__.py +++ b/src/dependency_injector/__init__.py @@ -1,6 +1,6 @@ """Dependency injector top-level package.""" -__version__ = '3.13.1' +__version__ = '3.13.2' """Version number that follows semantic versioning. :type: str