Skip to content

Commit a74b5b8

Browse files
authored
Merge pull request #1 from Sloy/master
asd
2 parents d403530 + 1e3b636 commit a74b5b8

File tree

15 files changed

+2175
-257
lines changed

15 files changed

+2175
-257
lines changed

README.md

Lines changed: 74 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
This 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
1112
The 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

1415
Each 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
1819
The 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

app/build.gradle

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,20 @@ android {
2323

2424
dependencies {
2525
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
26-
implementation 'com.android.support:appcompat-v7:28.0.0'
27-
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
28-
implementation 'com.android.support:design:28.0.0'
26+
implementation 'androidx.appcompat:appcompat:1.0.2'
27+
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
28+
implementation 'com.google.android.material:material:1.0.0'
2929

3030
// Koin
31-
implementation "org.koin:koin-android:1.0.1"
31+
implementation "org.koin:koin-android:2.0.0-alpha-3"
3232

3333
// Kodein
3434
implementation 'org.kodein.di:kodein-di-erased-jvm:5.3.0'
3535

3636
// Dagger
3737
implementation 'com.google.dagger:dagger:2.16'
3838
kapt 'com.google.dagger:dagger-compiler:2.16'
39+
40+
// Katana
41+
implementation 'com.github.rewe-digital-incubator.katana:katana-android:1.2.2'
3942
}

0 commit comments

Comments
 (0)