Skip to content

Commit 34e6711

Browse files
committed
Add different permutations
1 parent 11b5569 commit 34e6711

File tree

10 files changed

+44357
-237
lines changed

10 files changed

+44357
-237
lines changed

benchmarks/androidApp/src/androidTest/kotlin/io/realm/kotlin/benchmarks/android/OpenRealmTestsGenerated.kt

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,9 @@ package io.realm.kotlin.benchmarks.android
1717

1818
import androidx.benchmark.junit4.BenchmarkRule
1919
import androidx.benchmark.junit4.measureRepeated
20-
import io.realm.generated.tenStringObjectClasses
20+
import io.realm.generated.openCloseRealmClassesMap
2121
import io.realm.kotlin.Realm
2222
import io.realm.kotlin.RealmConfiguration
23-
import io.realm.kotlin.benchmarks.SchemaSize
2423
import io.realm.kotlin.types.RealmObject
2524
import org.junit.After
2625
import org.junit.Before
@@ -31,13 +30,22 @@ import org.junit.runners.Parameterized
3130
import kotlin.reflect.KClass
3231

3332
@RunWith(Parameterized::class)
34-
class OpenRealmTestsGenerated(private val schemaSize: Int) {
33+
class OpenRealmTestsGenerated(
34+
private val className: String,
35+
private val schemaSize: Int,
36+
) {
3537

3638
companion object {
3739
@JvmStatic
38-
@Parameterized.Parameters(name = "schema-size-{0}")
39-
fun initParameters(): Collection<Int> {
40-
return setOf(1, 10, 100)
40+
@Parameterized.Parameters(name = "{0}-schema-size-{1}")
41+
fun initParameters(): Collection<Array<*>> {
42+
val schemaSizes = listOf(1, 10, 100)
43+
44+
return openCloseRealmClassesMap.keys
45+
.flatMap {className ->
46+
schemaSizes.map { schemaSize -> arrayOf(className, schemaSize) }
47+
}
48+
.toList()
4149
}
4250
}
4351

@@ -49,7 +57,11 @@ class OpenRealmTestsGenerated(private val schemaSize: Int) {
4957

5058
@Before
5159
fun setUp() {
52-
val schema: Set<KClass<out RealmObject>> = tenStringObjectClasses.subList(0, schemaSize).toSet()
60+
val schema: Set<KClass<out RealmObject>> =
61+
openCloseRealmClassesMap[className]!!
62+
.subList(0, schemaSize)
63+
.toSet()
64+
5365
config = RealmConfiguration.Builder(schema)
5466
.directory("./build/benchmark-realms")
5567
.build()

benchmarks/shared/build.gradle.kts

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import com.android.build.gradle.internal.tasks.factory.dependsOn
12
import io.realm.ClassGeneratorSpec
2-
import io.realm.generate
3+
import io.realm.BenchmarkClassSuite
34

45
plugins {
56
kotlin("multiplatform")
@@ -27,7 +28,7 @@ kotlin {
2728
// baseName = "shared"
2829
// }
2930
// }
30-
31+
3132
sourceSets {
3233
val commonMain by getting {
3334
dependencies {
@@ -60,25 +61,54 @@ kotlin {
6061
}
6162
}
6263

63-
abstract class ClassGenerator : DefaultTask() {
64-
@TaskAction
65-
fun generate() {
66-
val output = project.file("./src/commonMain/kotlin/")
64+
// Create a task using the task type
65+
val genClassesTask = tasks.create("classGen") {
66+
val output = project.file("./src/commonMain/kotlin/")
6767

68-
// Clear out any previous contents
69-
project.file("./src/commonMain/kotlin/io/realm/generated").deleteRecursively()
68+
// Clear out any previous contents
69+
project.file("./src/commonMain/kotlin/io/realm/generated").deleteRecursively()
7070

71-
ClassGeneratorSpec(
71+
BenchmarkClassSuite(
72+
name = "openCloseRealm",
73+
packageName = "io.realm.generated",
74+
output = output,
75+
) {
76+
addClassGeneratorSpec(
77+
classCount = 100,
78+
className = "OneString",
79+
stringFieldCount = 1,
80+
)
81+
addClassGeneratorSpec(
82+
classCount = 100,
83+
className = "OneStringRealmList",
84+
stringRealmListCount = 1,
85+
)
86+
addClassGeneratorSpec(
87+
classCount = 100,
88+
className = "TenStrings",
89+
stringFieldCount = 10,
90+
)
91+
addClassGeneratorSpec(
7292
classCount = 100,
73-
packageName = "io.realm.generated",
74-
className = "TenStringObject",
75-
stringFieldCount = 10
76-
).generate(output)
93+
className = "TenStringRealmLists",
94+
stringRealmListCount = 10,
95+
)
96+
addClassGeneratorSpec(
97+
classCount = 100,
98+
className = "HundredStrings",
99+
stringFieldCount = 100,
100+
)
101+
addClassGeneratorSpec(
102+
classCount = 100,
103+
className = "HundredStringRealmLists",
104+
stringRealmListCount = 100,
105+
)
77106
}
78107
}
79108

80-
// Create a task using the task type
81-
tasks.register<ClassGenerator>("classGen")
109+
afterEvaluate {
110+
tasks.named("assemble").dependsOn(genClassesTask.name)
111+
}
82112

83113
android {
84114
compileSdk = Versions.Android.compileSdkVersion

0 commit comments

Comments
 (0)