Skip to content

Commit ffc9828

Browse files
author
Abduqodiri Qurbonzoda
committed
Refactor set benchmark generators
1 parent a216990 commit ffc9828

20 files changed

+210
-243
lines changed

benchmarks-libraries/src/main/kotlin/generators/benchmarkSourceGenerator.kt

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -141,19 +141,19 @@ private val mapBuilderImpls = listOf(
141141
)
142142

143143
private val setImpls = listOf(
144-
SetKotlinBenchmark(),
145-
SetKotlinOrderedBenchmark(),
146-
SetCapsuleBenchmark(),
147-
SetCyclopsBenchmark(),
148-
SetCyclopsTrieBenchmark(),
149-
SetCyclopsSortedBenchmark(),
150-
SetClojureBenchmark(),
151-
SetClojureSortedBenchmark(),
152-
SetScalaBenchmark(),
153-
SetScalaSortedBenchmark(),
154-
SetVavrBenchmark(),
155-
SetVavrSortedBenchmark(),
156-
SetVavrOrderedBenchmark()
144+
KotlinSetImplementation,
145+
KotlinOrderedSetImplementation,
146+
CapsuleSetImplementation,
147+
CyclopsSetImplementation,
148+
CyclopsTrieSetImplementation,
149+
CyclopsSortedSetImplementation,
150+
ClojureSetImplementation,
151+
ClojureSortedSetImplementation,
152+
ScalaSetImplementation,
153+
ScalaSortedSetImplementation,
154+
VavrSetImplementation,
155+
VavrSortedSetImplementation,
156+
VavrOrderedSetImplementation
157157
)
158158
private val setBuilderImpls = listOf(
159159
SetBuilderKotlinBenchmark(),
@@ -223,12 +223,19 @@ fun generateBenchmarks() {
223223
mapBuilderImpls.filterIsInstance<MapBuilderRemoveBenchmark>().map { MapBuilderRemoveBenchmarkGenerator(it) }
224224
)*/
225225

226-
val setBenchmarks = listOf(
226+
val setBenchmarks = setImpls.map { listOf(
227+
SetAddBenchmarkGenerator(it),
228+
SetContainsBenchmarkGenerator(it),
229+
SetIterateBenchmarkGenerator(it),
230+
SetRemoveBenchmarkGenerator(it),
231+
SetUtilsGenerator(it)
232+
) }
233+
/*listOf(
227234
setImpls.filterIsInstance<SetAddBenchmark>().map { SetAddBenchmarkGenerator(it) },
228235
setImpls.filterIsInstance<SetContainsBenchmark>().map { SetContainsBenchmarkGenerator(it) },
229236
setImpls.filterIsInstance<SetIterateBenchmark>().map { SetIterateBenchmarkGenerator(it) },
230237
setImpls.filterIsInstance<SetRemoveBenchmark>().map { SetRemoveBenchmarkGenerator(it) }
231-
)
238+
)*/
232239
val setBuilderBenchmarks = listOf(
233240
setBuilderImpls.filterIsInstance<SetBuilderAddBenchmark>().map { SetBuilderAddBenchmarkGenerator(it) },
234241
setBuilderImpls.filterIsInstance<SetBuilderContainsBenchmark>().map { SetBuilderContainsBenchmarkGenerator(it) },
@@ -250,15 +257,14 @@ fun generateBenchmarks() {
250257
}
251258

252259
fun generateUtils() {
253-
val setUtils = setImpls.filterIsInstance<SetBenchmarkUtils>().map { SetUtilsGenerator(it) }
254260
val setBuilderUtils = setBuilderImpls.filterIsInstance<SetBuilderBenchmarkUtils>().map { SetBuilderUtilsGenerator(it) }
255261

256262
val commonUtils = listOf(
257263
IntWrapperGenerator(),
258264
CommonUtilsGenerator()
259265
)
260266

261-
val utils = setUtils + setBuilderUtils + commonUtils
267+
val utils = setBuilderUtils + commonUtils
262268

263269
utils.forEach { util ->
264270
val path = util.getPackage().replace('.', '/') + "/" + util.outputFileName + ".kt"

benchmarks-libraries/src/main/kotlin/generators/immutableSet/addGenerator.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,7 @@ package generators.immutableSet
1919
import generators.BenchmarkSourceGenerator
2020
import java.io.PrintWriter
2121

22-
interface SetAddBenchmark {
23-
val packageName: String
24-
fun setType(E: String): String
25-
}
26-
27-
class SetAddBenchmarkGenerator(private val impl: SetAddBenchmark) : BenchmarkSourceGenerator() {
22+
class SetAddBenchmarkGenerator(private val impl: SetImplementation) : BenchmarkSourceGenerator() {
2823
override val outputFileName: String = "Add"
2924

3025
override fun getPackage(): String {
@@ -42,15 +37,15 @@ open class Add {
4237
@Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE)
4338
var hashCodeType = ""
4439
45-
private var elements = listOf<IntWrapper>()
40+
private var elements = listOf<$setElementType>()
4641
4742
@Setup(Level.Trial)
4843
fun prepare() {
4944
elements = generateElements(hashCodeType, size)
5045
}
5146
5247
@Benchmark
53-
fun add(): ${impl.setType("IntWrapper")} {
48+
fun add(): ${impl.type()} {
5449
return persistentSetAdd(elements)
5550
}
5651

benchmarks-libraries/src/main/kotlin/generators/immutableSet/containsGenerator.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,7 @@ package generators.immutableSet
1919
import generators.BenchmarkSourceGenerator
2020
import java.io.PrintWriter
2121

22-
interface SetContainsBenchmark {
23-
val packageName: String
24-
fun emptyOf(E: String): String
25-
}
26-
27-
class SetContainsBenchmarkGenerator(private val impl: SetContainsBenchmark) : BenchmarkSourceGenerator() {
22+
class SetContainsBenchmarkGenerator(private val impl: SetImplementation) : BenchmarkSourceGenerator() {
2823
override val outputFileName: String = "Contains"
2924

3025
override fun getPackage(): String {
@@ -42,8 +37,8 @@ open class Contains {
4237
@Param(ASCENDING_HASH_CODE, RANDOM_HASH_CODE, COLLISION_HASH_CODE, NON_EXISTING_HASH_CODE)
4338
var hashCodeType = ""
4439
45-
private var elements = listOf<IntWrapper>()
46-
private var persistentSet = ${impl.emptyOf("IntWrapper")}
40+
private var elements = listOf<$setElementType>()
41+
private var persistentSet = ${impl.empty()}
4742
4843
@Setup(Level.Trial)
4944
fun prepare() {

benchmarks-libraries/src/main/kotlin/generators/immutableSet/impl/capsule.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ package generators.immutableSet.impl
1818

1919
import generators.immutableSet.*
2020

21-
class SetCapsuleBenchmark:
22-
SetContainsBenchmark,
23-
SetIterateBenchmark,
24-
SetAddBenchmark,
25-
SetRemoveBenchmark,
26-
SetBenchmarkUtils
27-
{
28-
override val packageName: String = "capsule"
21+
object CapsuleSetImplementation: SetImplementation {
22+
override val packageName: String
23+
= "capsule"
2924

30-
override fun setType(E: String): String = "io.usethesource.capsule.Set.Immutable<$E>"
25+
override fun type(): String
26+
= "io.usethesource.capsule.Set.Immutable<$setElementType>"
27+
override fun empty(): String
28+
= "io.usethesource.capsule.core.PersistentTrieSet.of<$setElementType>()"
3129

32-
override fun emptyOf(E: String): String = "io.usethesource.capsule.core.PersistentTrieSet.of<$E>()"
33-
34-
override fun addOperation(set: String, element: String): String = "$set.__insert($element)"
35-
36-
override fun removeOperation(set: String, element: String): String = "$set.__remove($element)"
30+
override fun addOperation(set: String, element: String): String
31+
= "$set.__insert($element)"
32+
override fun removeOperation(set: String, element: String): String
33+
= "$set.__remove($element)"
3734
}

benchmarks-libraries/src/main/kotlin/generators/immutableSet/impl/clojure.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ package generators.immutableSet.impl
1818

1919
import generators.immutableSet.*
2020

21-
class SetClojureBenchmark:
22-
SetContainsBenchmark,
23-
SetIterateBenchmark,
24-
SetAddBenchmark,
25-
SetRemoveBenchmark,
26-
SetBenchmarkUtils
27-
{
28-
override val packageName: String = "clojure"
21+
object ClojureSetImplementation: SetImplementation {
22+
override val packageName: String
23+
= "clojure"
2924

30-
override fun setType(E: String): String = "clojure.lang.PersistentHashSet"
25+
override fun type(): String
26+
= "clojure.lang.PersistentHashSet"
27+
override fun empty(): String
28+
= "clojure.lang.PersistentHashSet.EMPTY"
3129

32-
override fun emptyOf(E: String): String = "clojure.lang.PersistentHashSet.EMPTY"
33-
34-
override fun addOperation(set: String, element: String): String = "$set.cons($element) as clojure.lang.PersistentHashSet"
35-
36-
override fun removeOperation(set: String, element: String): String = "$set.disjoin($element) as clojure.lang.PersistentHashSet"
30+
override fun addOperation(set: String, element: String): String
31+
= "$set.cons($element) as clojure.lang.PersistentHashSet"
32+
override fun removeOperation(set: String, element: String): String
33+
= "$set.disjoin($element) as clojure.lang.PersistentHashSet"
3734
}

benchmarks-libraries/src/main/kotlin/generators/immutableSet/impl/clojureSorted.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ package generators.immutableSet.impl
1818

1919
import generators.immutableSet.*
2020

21-
class SetClojureSortedBenchmark:
22-
SetContainsBenchmark,
23-
SetIterateBenchmark,
24-
SetAddBenchmark,
25-
SetRemoveBenchmark,
26-
SetBenchmarkUtils
27-
{
28-
override val packageName: String = "clojureSorted"
21+
object ClojureSortedSetImplementation: SetImplementation {
22+
override val packageName: String
23+
= "clojureSorted"
2924

30-
override fun setType(E: String): String = "clojure.lang.PersistentTreeSet"
25+
override fun type(): String
26+
= "clojure.lang.PersistentTreeSet"
27+
override fun empty(): String
28+
= "clojure.lang.PersistentTreeSet.EMPTY"
3129

32-
override fun emptyOf(E: String): String = "clojure.lang.PersistentTreeSet.EMPTY"
33-
34-
override fun addOperation(set: String, element: String): String = "$set.cons($element) as clojure.lang.PersistentTreeSet"
35-
36-
override fun removeOperation(set: String, element: String): String = "$set.disjoin($element) as clojure.lang.PersistentTreeSet"
30+
override fun addOperation(set: String, element: String): String
31+
= "$set.cons($element) as clojure.lang.PersistentTreeSet"
32+
override fun removeOperation(set: String, element: String): String
33+
= "$set.disjoin($element) as clojure.lang.PersistentTreeSet"
3734
}

benchmarks-libraries/src/main/kotlin/generators/immutableSet/impl/cyclops.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ package generators.immutableSet.impl
1818

1919
import generators.immutableSet.*
2020

21-
class SetCyclopsBenchmark:
22-
SetContainsBenchmark,
23-
SetIterateBenchmark,
24-
SetAddBenchmark,
25-
SetRemoveBenchmark,
26-
SetBenchmarkUtils
27-
{
28-
override val packageName: String = "cyclops"
21+
object CyclopsSetImplementation: SetImplementation {
22+
override val packageName: String
23+
= "cyclops"
2924

30-
override fun setType(E: String): String = "cyclops.data.HashSet<$E>"
25+
override fun type(): String
26+
= "cyclops.data.HashSet<$setElementType>"
27+
override fun empty(): String
28+
= "cyclops.data.HashSet.empty<$setElementType>()"
3129

32-
override fun emptyOf(E: String): String = "cyclops.data.HashSet.empty<$E>()"
33-
34-
override fun addOperation(set: String, element: String): String = "$set.add($element)"
35-
36-
override fun removeOperation(set: String, element: String): String = "$set.removeValue($element)"
30+
override fun addOperation(set: String, element: String): String
31+
= "$set.add($element)"
32+
override fun removeOperation(set: String, element: String): String
33+
= "$set.removeValue($element)"
3734
}

benchmarks-libraries/src/main/kotlin/generators/immutableSet/impl/cyclopsSorted.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ package generators.immutableSet.impl
1818

1919
import generators.immutableSet.*
2020

21-
class SetCyclopsSortedBenchmark:
22-
SetContainsBenchmark,
23-
SetIterateBenchmark,
24-
SetAddBenchmark,
25-
SetRemoveBenchmark,
26-
SetBenchmarkUtils
27-
{
28-
override val packageName: String = "cyclopsSorted"
21+
object CyclopsSortedSetImplementation: SetImplementation {
22+
override val packageName: String
23+
= "cyclopsSorted"
2924

30-
override fun setType(E: String): String = "cyclops.data.TreeSet<$E>"
25+
override fun type(): String
26+
= "cyclops.data.TreeSet<$setElementType>"
27+
override fun empty(): String
28+
= "cyclops.data.TreeSet.empty<$setElementType>()"
3129

32-
override fun emptyOf(E: String): String = "cyclops.data.TreeSet.empty<$E>()"
33-
34-
override fun addOperation(set: String, element: String): String = "$set.add($element)"
35-
36-
override fun removeOperation(set: String, element: String): String = "$set.removeValue($element)"
30+
override fun addOperation(set: String, element: String): String
31+
= "$set.add($element)"
32+
override fun removeOperation(set: String, element: String): String
33+
= "$set.removeValue($element)"
3734
}

benchmarks-libraries/src/main/kotlin/generators/immutableSet/impl/cyclopsTrie.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ package generators.immutableSet.impl
1818

1919
import generators.immutableSet.*
2020

21-
class SetCyclopsTrieBenchmark:
22-
SetContainsBenchmark,
23-
SetIterateBenchmark,
24-
SetAddBenchmark,
25-
SetRemoveBenchmark,
26-
SetBenchmarkUtils
27-
{
28-
override val packageName: String = "cyclopsTrie"
21+
object CyclopsTrieSetImplementation: SetImplementation {
22+
override val packageName: String
23+
= "cyclopsTrie"
2924

30-
override fun setType(E: String): String = "cyclops.data.TrieSet<$E>"
25+
override fun type(): String
26+
= "cyclops.data.TrieSet<$setElementType>"
27+
override fun empty(): String
28+
= "cyclops.data.TrieSet.empty<$setElementType>()"
3129

32-
override fun emptyOf(E: String): String = "cyclops.data.TrieSet.empty<$E>()"
33-
34-
override fun addOperation(set: String, element: String): String = "$set.add($element)"
35-
36-
override fun removeOperation(set: String, element: String): String = "$set.removeValue($element)"
30+
override fun addOperation(set: String, element: String): String
31+
= "$set.add($element)"
32+
override fun removeOperation(set: String, element: String): String
33+
= "$set.removeValue($element)"
3734
}

benchmarks-libraries/src/main/kotlin/generators/immutableSet/impl/kotlin.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ package generators.immutableSet.impl
1818

1919
import generators.immutableSet.*
2020

21-
class SetKotlinBenchmark:
22-
SetContainsBenchmark,
23-
SetIterateBenchmark,
24-
SetAddBenchmark,
25-
SetRemoveBenchmark,
26-
SetBenchmarkUtils
27-
{
28-
override val packageName: String = "kotlin"
21+
object KotlinSetImplementation: SetImplementation {
22+
override val packageName: String
23+
= "kotlin"
2924

30-
override fun setType(E: String): String = "kotlinx.collections.immutable.PersistentSet<$E>"
25+
override fun type(): String
26+
= "kotlinx.collections.immutable.PersistentSet<$setElementType>"
27+
override fun empty(): String
28+
= "kotlinx.collections.immutable.persistentHashSetOf<$setElementType>()"
3129

32-
override fun emptyOf(E: String): String = "kotlinx.collections.immutable.persistentHashSetOf<$E>()"
33-
34-
override fun addOperation(set: String, element: String): String = "$set.add($element)"
35-
36-
override fun removeOperation(set: String, element: String): String = "$set.remove($element)"
30+
override fun addOperation(set: String, element: String): String
31+
= "$set.add($element)"
32+
override fun removeOperation(set: String, element: String): String
33+
= "$set.remove($element)"
3734
}

0 commit comments

Comments
 (0)