@@ -36,6 +36,10 @@ import java.nio.file.Path
36
36
import java.nio.file.Paths
37
37
import javax.xml.xpath.XPathFactory
38
38
39
+
40
+ private const val BENCHMARKS_ROOT = " src/jmh/java/"
41
+
42
+
39
43
abstract class SourceGenerator {
40
44
abstract val outputFileName: String
41
45
open fun getPackage (): String = " benchmarks"
@@ -60,6 +64,17 @@ abstract class SourceGenerator {
60
64
protected abstract fun generateBody (out : PrintWriter ): Unit
61
65
}
62
66
67
+ fun readCopyrightNoticeFromProfile (copyrightProfile : File ): String {
68
+ val template = copyrightProfile.reader().use { reader ->
69
+ XPathFactory .newInstance().newXPath().evaluate(" /component/copyright/option[@name='notice']/@value" , InputSource (reader))
70
+ }
71
+ val yearTemplate = " $today.year"
72
+ val year = java.time.LocalDate .now().year.toString()
73
+ assert (yearTemplate in template)
74
+
75
+ return template.replace(yearTemplate, year).lines().joinToString(" " , prefix = " /*\n " , postfix = " */\n " ) { " * $it \n " }
76
+ }
77
+
63
78
64
79
abstract class BenchmarkSourceGenerator : SourceGenerator () {
65
80
override val imports: Set <String > = setOf (
@@ -87,19 +102,6 @@ abstract class UtilsSourceGenerator: SourceGenerator() {
87
102
override val imports: Set <String > = setOf ()
88
103
}
89
104
90
- fun readCopyrightNoticeFromProfile (copyrightProfile : File ): String {
91
- val template = copyrightProfile.reader().use { reader ->
92
- XPathFactory .newInstance().newXPath().evaluate(" /component/copyright/option[@name='notice']/@value" , InputSource (reader))
93
- }
94
- val yearTemplate = " $today.year"
95
- val year = java.time.LocalDate .now().year.toString()
96
- assert (yearTemplate in template)
97
-
98
- return template.replace(yearTemplate, year).lines().joinToString(" " , prefix = " /*\n " , postfix = " */\n " ) { " * $it \n " }
99
- }
100
-
101
- private const val BENCHMARKS_ROOT = " src/jmh/java/"
102
-
103
105
104
106
private val listImpls = listOf (
105
107
KotlinListImplementation ,
@@ -171,13 +173,6 @@ fun generateBenchmarks() {
171
173
ListSetBenchmarkGenerator (it),
172
174
ListUtilsGenerator (it)
173
175
) }
174
- /* listOf(
175
- listImpls.filterIsInstance<ListAddBenchmark>().map { ListAddBenchmarkGenerator(it) },
176
- listImpls.filterIsInstance<ListGetBenchmark>().map { ListGetBenchmarkGenerator(it) },
177
- listImpls.filterIsInstance<ListIterateBenchmark>().map { ListIterateBenchmarkGenerator(it) },
178
- listImpls.filterIsInstance<ListRemoveBenchmark>().map { ListRemoveBenchmarkGenerator(it) },
179
- listImpls.filterIsInstance<ListSetBenchmark>().map { ListSetBenchmarkGenerator(it) }
180
- )*/
181
176
val listBuilderBenchmarks = listBuilderImpls.map { listOf (
182
177
ListBuilderAddBenchmarkGenerator (it),
183
178
ListBuilderGetBenchmarkGenerator (it),
@@ -187,13 +182,6 @@ fun generateBenchmarks() {
187
182
) } + listBuilderImpls.filter(ListBuilderImplementation ::isIterable).map { listOf (
188
183
ListBuilderIterateBenchmarkGenerator (it)
189
184
) }
190
- /* listOf(
191
- listBuilderImpls.filterIsInstance<ListBuilderAddBenchmark>().map { ListBuilderAddBenchmarkGenerator(it) },
192
- listBuilderImpls.filterIsInstance<ListBuilderGetBenchmark>().map { ListBuilderGetBenchmarkGenerator(it) },
193
- listBuilderImpls.filterIsInstance<ListBuilderIterateBenchmark>().map { ListBuilderIterateBenchmarkGenerator(it) },
194
- listBuilderImpls.filterIsInstance<ListBuilderRemoveBenchmark>().map { ListBuilderRemoveBenchmarkGenerator(it) },
195
- listBuilderImpls.filterIsInstance<ListBuilderSetBenchmark>().map { ListBuilderSetBenchmarkGenerator(it) }
196
- )*/
197
185
198
186
val mapBenchmarks = mapImpls.map { listOf (
199
187
MapGetBenchmarkGenerator (it),
@@ -202,12 +190,6 @@ fun generateBenchmarks() {
202
190
MapRemoveBenchmarkGenerator (it),
203
191
MapUtilsGenerator (it)
204
192
) }
205
- /* listOf(
206
- mapImpls.filterIsInstance<MapGetBenchmark>().map { MapGetBenchmarkGenerator(it) },
207
- mapImpls.filterIsInstance<MapIterateBenchmark>().map { MapIterateBenchmarkGenerator(it) },
208
- mapImpls.filterIsInstance<MapPutBenchmark>().map { MapPutBenchmarkGenerator(it) },
209
- mapImpls.filterIsInstance<MapRemoveBenchmark>().map { MapRemoveBenchmarkGenerator(it) }
210
- )*/
211
193
val mapBuilderBenchmarks = mapBuilderImpls.map { listOf (
212
194
MapBuilderGetBenchmarkGenerator (it),
213
195
MapBuilderPutBenchmarkGenerator (it),
@@ -216,12 +198,6 @@ fun generateBenchmarks() {
216
198
) } + mapBuilderImpls.filter(MapBuilderImplementation ::isIterable).map { listOf (
217
199
MapBuilderIterateBenchmarkGenerator (it)
218
200
) }
219
- /* listOf(
220
- mapBuilderImpls.filterIsInstance<MapBuilderGetBenchmark>().map { MapBuilderGetBenchmarkGenerator(it) },
221
- mapBuilderImpls.filterIsInstance<MapBuilderIterateBenchmark>().map { MapBuilderIterateBenchmarkGenerator(it) },
222
- mapBuilderImpls.filterIsInstance<MapBuilderPutBenchmark>().map { MapBuilderPutBenchmarkGenerator(it) },
223
- mapBuilderImpls.filterIsInstance<MapBuilderRemoveBenchmark>().map { MapBuilderRemoveBenchmarkGenerator(it) }
224
- )*/
225
201
226
202
val setBenchmarks = setImpls.map { listOf (
227
203
SetAddBenchmarkGenerator (it),
@@ -230,12 +206,6 @@ fun generateBenchmarks() {
230
206
SetRemoveBenchmarkGenerator (it),
231
207
SetUtilsGenerator (it)
232
208
) }
233
- /* listOf(
234
- setImpls.filterIsInstance<SetAddBenchmark>().map { SetAddBenchmarkGenerator(it) },
235
- setImpls.filterIsInstance<SetContainsBenchmark>().map { SetContainsBenchmarkGenerator(it) },
236
- setImpls.filterIsInstance<SetIterateBenchmark>().map { SetIterateBenchmarkGenerator(it) },
237
- setImpls.filterIsInstance<SetRemoveBenchmark>().map { SetRemoveBenchmarkGenerator(it) }
238
- )*/
239
209
val setBuilderBenchmarks = setBuilderImpls.map { listOf (
240
210
SetBuilderAddBenchmarkGenerator (it),
241
211
SetBuilderContainsBenchmarkGenerator (it),
@@ -244,48 +214,38 @@ fun generateBenchmarks() {
244
214
) } + setBuilderImpls.filter(SetBuilderImplementation ::isIterable).map { listOf (
245
215
SetBuilderIterateBenchmarkGenerator (it)
246
216
) }
247
- /* listOf(
248
- setBuilderImpls.filterIsInstance<SetBuilderAddBenchmark>().map { SetBuilderAddBenchmarkGenerator(it) },
249
- setBuilderImpls.filterIsInstance<SetBuilderContainsBenchmark>().map { SetBuilderContainsBenchmarkGenerator(it) },
250
- setBuilderImpls.filterIsInstance<SetBuilderIterateBenchmark>().map { SetBuilderIterateBenchmarkGenerator(it) },
251
- setBuilderImpls.filterIsInstance<SetBuilderRemoveBenchmark>().map { SetBuilderRemoveBenchmarkGenerator(it) }
252
- )*/
253
-
254
-
255
- val allBenchmarks = (listBenchmarks + listBuilderBenchmarks + mapBenchmarks + mapBuilderBenchmarks + setBenchmarks + setBuilderBenchmarks).flatten()
256
217
257
- allBenchmarks.forEach { benchmark ->
258
- val path = benchmark.getPackage().replace(' .' , ' /' ) + " /" + benchmark.outputFileName + " .kt"
259
- val file = File (BENCHMARKS_ROOT + path)
260
- file.parentFile?.mkdirs()
261
- val out = PrintWriter (file)
262
- benchmark.generate(out )
263
- out .flush()
264
- }
265
- }
266
-
267
- fun generateUtils () {
268
218
val commonUtils = listOf (
269
219
IntWrapperGenerator (),
270
220
CommonUtilsGenerator ()
271
221
)
272
222
273
- commonUtils.forEach { util ->
274
- val path = util.getPackage().replace(' .' , ' /' ) + " /" + util.outputFileName + " .kt"
223
+
224
+ val allGenerators = commonUtils + listOf (
225
+ listBenchmarks,
226
+ listBuilderBenchmarks,
227
+ mapBenchmarks,
228
+ mapBuilderBenchmarks,
229
+ setBenchmarks,
230
+ setBuilderBenchmarks
231
+ ).flatten().flatten()
232
+
233
+ allGenerators.forEach { generator ->
234
+ val path = generator.getPackage().replace(' .' , ' /' ) + " /" + generator.outputFileName + " .kt"
275
235
val file = File (BENCHMARKS_ROOT + path)
276
236
file.parentFile?.mkdirs()
277
237
val out = PrintWriter (file)
278
- util .generate(out )
238
+ generator .generate(out )
279
239
out .flush()
280
240
}
281
241
}
282
242
243
+
283
244
fun main () {
284
245
Files .walk(Paths .get(BENCHMARKS_ROOT ))
285
246
.sorted(Comparator .reverseOrder())
286
247
.map(Path ::toFile)
287
248
.forEach { it.delete() }
288
249
289
- generateUtils()
290
250
generateBenchmarks()
291
251
}
0 commit comments