33This project aims to measure the performance of several Dependency Injection frameworks (or Service Locators) in different devices.
44
55## Libraries tested
6- - [ Koin] ( https://insert-koin.io/ ) - 1 .0.1
6+ - [ Koin] ( https://insert-koin.io/ ) - 2 .0.0-alpha-3
77- [ Kodein] ( http://kodein.org/Kodein-DI/ ) - 5.3.0
88- [ Dagger 2] ( https://google.github.io/dagger/ ) - 2.16
9+ - [ Katana] ( https://github.com/rewe-digital-incubator/katana/ ) - 1.2.2
910
1011## The test
1112The test data are classes with dependencies in a structure similar to Fibonacci sequence, to simulate multiple levels of transitive dependencies.
12- For each library there is a test with Kotlin classes and one with Java classes, because some libraries seem to be affected by this.
13+ For each library there is a test with Kotlin classes and one with Java classes, because some libraries seem to be affected by this difference .
1314
1415Each test injects one of this dependencies 100 times and prints the maximum time, the minimum and the average.
1516
@@ -18,165 +19,89 @@ The project contains an Android application that run the tests on its onCreate a
1819The actual test is implemented in the class [ InjectionTest.kt] ( https://github.com/Sloy/android-dependency-injection-performance/blob/master/app/src/main/java/com/sloydev/dependencyinjectionperformance/InjectionTest.kt )
1920
2021## Results
21- Results can be quite different between different devices, so here are some results in different devices with different Android versions. More results are welcomed.
22+ Results can be quite different between different devices, so here are some results in different devices with different Android versions. Each table contains the ** median ** time of each library's setup and injection. More results are welcomed.
2223
2324- [ Samsung Galaxy J5] ( #samsung-galaxy-j5 )
25+ - [ Samsung Galaxy S8] ( #samsung-galaxy-s8 )
2426- [ Huawei P8 Lite] ( #huawei-p8-lite )
27+ - [ Xiaomi MI A1] ( #xiaomi-mi-a1 )
2528- [ OnePlus One] ( #oneplus-one )
26- - [ OnePlus 5] ( #huawei-p8-lite )
29+ - [ OnePlus 5] ( #oneplus-5 )
2730- [ Nexus 6] ( #nexus-6 )
2831
2932### Samsung Galaxy J5
30- ```
31- =========|=====================
32- Device: | samsung j5nlte v6.0.1
33- ---------|--------------------
34- Test: | Koin + Kotlin
35- Min-Max: | 47,41-74,25 ms
36- Average: | 60,16 ms
37- ---------|--------------------
38- Test: | Koin + Java
39- Min-Max: | 189,77-205,96 ms
40- Average: | 194,09 ms
41- ---------|--------------------
42- Test: | Kodein + Kotlin
43- Min-Max: | 0,76-3,38 ms
44- Average: | 0,83 ms
45- ---------|--------------------
46- Test: | Kodein + Java
47- Min-Max: | 0,82-4,67 ms
48- Average: | 0,93 ms
49- ---------|--------------------
50- Test: | Dagger2 + Kotlin
51- Min-Max: | 0,03-9,48 ms
52- Average: | 0,12 ms
53- ---------|--------------------
54- Test: | Dagger2 + Java
55- Min-Max: | 0,02-2,03 ms
56- Average: | 0,05 ms
57- =========|=====================
58- ```
33+ samsung j5nlte with Android 6.0.1
34+
35+ Library | Setup Kotlin | Setup Java | Inject Kotlin | Inject Java
36+ --- | ---:| ---:| ---:| ---:
37+ ** Koin** | 51.47 ms | 53.65 ms | 2.47 ms | 2.52 ms
38+ ** Kodein** | 73.36 ms | 75.21 ms | 9.89 ms | 9.58 ms
39+ ** Katana** | 12.34 ms | 12.30 ms | 2.00 ms | 1.94 ms
40+ ** Custom** | 4.85 ms | 4.81 ms | 0.73 ms | 0.84 ms
41+ ** Dagger** | 0.02 ms | 0.02 ms | 0.27 ms | 0.23 ms
42+
43+ ### Samsung Galaxy S8
44+ samsung dreamlte with Android 8.0.0
45+
46+ Library | Setup Kotlin | Setup Java | Inject Kotlin | Inject Java
47+ --- | ---:| ---:| ---:| ---:
48+ ** Koin** | 5.68 ms | 6.04 ms | 0.13 ms | 0.21 ms
49+ ** Kodein** | 7.13 ms | 7.38 ms | 0.20 ms | 0.21 ms
50+ ** Katana** | 0.64 ms | 0.68 ms | 0.21 ms | 0.16 ms
51+ ** Custom** | 0.15 ms | 0.16 ms | 0.11 ms | 0.11 ms
52+ ** Dagger** | 0.01 ms | 0.01 ms | 0.10 ms | 0.10 ms
5953
6054### Huawei P8 Lite
61- ```
62- =========|=====================
63- Device: | Huawei hwALE-H v6.0
64- ---------|--------------------
65- Test: | Koin + Kotlin
66- Min-Max: | 245,43-273,91 ms
67- Average: | 253,30 ms
68- ---------|--------------------
69- Test: | Koin + Java
70- Min-Max: | 373,67-399,93 ms
71- Average: | 377,57 ms
72- ---------|--------------------
73- Test: | Kodein + Kotlin
74- Min-Max: | 7,49-15,63 ms
75- Average: | 7,63 ms
76- ---------|--------------------
77- Test: | Kodein + Java
78- Min-Max: | 7,94-10,78 ms
79- Average: | 8,08 ms
80- ---------|--------------------
81- Test: | Dagger2 + Kotlin
82- Min-Max: | 0,22-5,60 ms
83- Average: | 0,28 ms
84- ---------|--------------------
85- Test: | Dagger2 + Java
86- Min-Max: | 0,20-5,04 ms
87- Average: | 0,25 ms
88- =========|=====================
89- ```
55+ Huawei hwALE-H with Android 6.0
56+
57+ Library | Setup Kotlin | Setup Java | Inject Kotlin | Inject Java
58+ --- | ---:| ---:| ---:| ---:
59+ ** Koin** | 12.12 ms | 12.34 ms | 0.26 ms | 0.26 ms
60+ ** Kodein** | 14.46 ms | 14.52 ms | 0.80 ms | 0.79 ms
61+ ** Katana** | 2.01 ms | 1.99 ms | 0.18 ms | 0.18 ms
62+ ** Custom** | 0.51 ms | 0.50 ms | 0.08 ms | 0.09 ms
63+ ** Dagger** | 0.00 ms | 0.00 ms | 0.03 ms | 0.02 ms
64+
65+ ### Xiaomi MI A1
66+ xiaomi tissot_sprout with Android 8.1.0
67+
68+ Library | Setup Kotlin | Setup Java | Inject Kotlin | Inject Java
69+ --- | ---:| ---:| ---:| ---:
70+ ** Koin** | 9.17 ms | 11.10 ms | 0.25 ms | 0.54 ms
71+ ** Kodein** | 16.64 ms | 16.22 ms | 0.82 ms | 0.32 ms
72+ ** Katana** | 1.42 ms | 1.28 ms | 0.31 ms | 0.31 ms
73+ ** Custom** | 0.28 ms | 0.28 ms | 0.19 ms | 0.23 ms
74+ ** Dagger** | 0.02 ms | 0.02 ms | 0.28 ms | 0.21 ms
9075
9176### OnePlus One
92- ```
93- =========|=====================
94- Device: | oneplus A0001 v5.0.2
95- ---------|--------------------
96- Test: | Koin + Kotlin
97- Min-Max: | 26,78-73,14 ms
98- Average: | 34,38 ms
99- ---------|--------------------
100- Test: | Koin + Java
101- Min-Max: | 105,04-201,14 ms
102- Average: | 128,99 ms
103- ---------|--------------------
104- Test: | Kodein + Kotlin
105- Min-Max: | 1,11-3,34 ms
106- Average: | 1,34 ms
107- ---------|--------------------
108- Test: | Kodein + Java
109- Min-Max: | 1,27-3,06 ms
110- Average: | 1,40 ms
111- ---------|--------------------
112- Test: | Dagger2 + Kotlin
113- Min-Max: | 0,02-2,81 ms
114- Average: | 0,07 ms
115- ---------|--------------------
116- Test: | Dagger2 + Java
117- Min-Max: | 0,02-1,84 ms
118- Average: | 0,05 ms
119- =========|=====================
120- ```
77+ oneplus A0001 with Android 5.0.2
78+
79+ Library | Setup Kotlin | Setup Java | Inject Kotlin | Inject Java
80+ --- | ---:| ---:| ---:| ---:
81+ ** Koin** | 11.84 ms | 12.00 ms | 0.27 ms | 0.30 ms
82+ ** Kodein** | 22.52 ms | 23.05 ms | 1.11 ms | 1.28 ms
83+ ** Katana** | 1.87 ms | 1.58 ms | 0.27 ms | 0.18 ms
84+ ** Custom** | 0.43 ms | 0.35 ms | 0.09 ms | 0.10 ms
85+ ** Dagger** | 0.00 ms | 0.00 ms | 0.04 ms | 0.04 ms
12186
12287### OnePlus 5
123- ```
124- =========|=====================
125- Device: | OnePlus OnePlus5 v8.1.0
126- ---------|--------------------
127- Test: | Koin + Kotlin
128- Min-Max: | 4,08-23,18 ms
129- Average: | 5,04 ms
130- ---------|--------------------
131- Test: | Koin + Java
132- Min-Max: | 4,61-11,47 ms
133- Average: | 5,16 ms
134- ---------|--------------------
135- Test: | Kodein + Kotlin
136- Min-Max: | 0,09-3,51 ms
137- Average: | 0,27 ms
138- ---------|--------------------
139- Test: | Kodein + Java
140- Min-Max: | 0,09-1,03 ms
141- Average: | 0,16 ms
142- ---------|--------------------
143- Test: | Dagger2 + Kotlin
144- Min-Max: | 0,01-0,42 ms
145- Average: | 0,04 ms
146- ---------|--------------------
147- Test: | Dagger2 + Java
148- Min-Max: | 0,01-0,32 ms
149- Average: | 0,03 ms
150- =========|=====================
151- ```
88+ OnePlus OnePlus5 with Android 8.1.0
89+
90+ Library | Setup Kotlin | Setup Java | Inject Kotlin | Inject Java
91+ --- | ---:| ---:| ---:| ---:
92+ ** Koin** | 2.27 ms | 2.46 ms | 0.05 ms | 0.05 ms
93+ ** Kodein** | 4.81 ms | 4.43 ms | 0.09 ms | 0.08 ms
94+ ** Katana** | 0.34 ms | 0.32 ms | 0.04 ms | 0.04 ms
95+ ** Custom** | 0.07 ms | 0.08 ms | 0.02 ms | 0.03 ms
96+ ** Dagger** | 0.00 ms | 0.00 ms | 0.04 ms | 0.02 ms
15297
15398### Nexus 6
154- ```
155- =========|=====================
156- Device: | google shamu v7.1.1
157- ---------|--------------------
158- Test: | Koin + Kotlin
159- Min-Max: | 12,47-52,59 ms
160- Average: | 15,56 ms
161- ---------|--------------------
162- Test: | Koin + Java
163- Min-Max: | 15,30-26,37 ms
164- Average: | 17,14 ms
165- ---------|--------------------
166- Test: | Kodein + Kotlin
167- Min-Max: | 0,50-13,12 ms
168- Average: | 1,50 ms
169- ---------|--------------------
170- Test: | Kodein + Java
171- Min-Max: | 0,52-5,87 ms
172- Average: | 0,98 ms
173- ---------|--------------------
174- Test: | Dagger2 + Kotlin
175- Min-Max: | 0,13-1,46 ms
176- Average: | 0,32 ms
177- ---------|--------------------
178- Test: | Dagger2 + Java
179- Min-Max: | 0,10-1,15 ms
180- Average: | 0,30 ms
181- =========|=====================
182- ```
99+ google shamu with Android 7.1.1
100+
101+ Library | Setup Kotlin | Setup Java | Inject Kotlin | Inject Java
102+ --- | ---:| ---:| ---:| ---:
103+ ** Koin** | 19.80 ms | 20.43 ms | 0.45 ms | 0.35 ms
104+ ** Kodein** | 21.48 ms | 21.02 ms | 0.74 ms | 0.62 ms
105+ ** Katana** | 1.23 ms | 1.16 ms | 0.31 ms | 0.27 ms
106+ ** Custom** | 0.29 ms | 0.29 ms | 0.20 ms | 0.31 ms
107+ ** Dagger** | 0.03 ms | 0.03 ms | 0.22 ms | 0.15 ms
0 commit comments