@@ -36,6 +36,10 @@ import java.nio.file.Path
3636import java.nio.file.Paths
3737import javax.xml.xpath.XPathFactory
3838
39+
40+ private const val BENCHMARKS_ROOT = " src/jmh/java/"
41+
42+
3943abstract class SourceGenerator {
4044 abstract val outputFileName: String
4145 open fun getPackage (): String = " benchmarks"
@@ -60,6 +64,17 @@ abstract class SourceGenerator {
6064 protected abstract fun generateBody (out : PrintWriter ): Unit
6165}
6266
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+
6378
6479abstract class BenchmarkSourceGenerator : SourceGenerator () {
6580 override val imports: Set <String > = setOf (
@@ -87,19 +102,6 @@ abstract class UtilsSourceGenerator: SourceGenerator() {
87102 override val imports: Set <String > = setOf ()
88103}
89104
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-
103105
104106private val listImpls = listOf (
105107 KotlinListImplementation ,
@@ -171,13 +173,6 @@ fun generateBenchmarks() {
171173 ListSetBenchmarkGenerator (it),
172174 ListUtilsGenerator (it)
173175 ) }
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- )*/
181176 val listBuilderBenchmarks = listBuilderImpls.map { listOf (
182177 ListBuilderAddBenchmarkGenerator (it),
183178 ListBuilderGetBenchmarkGenerator (it),
@@ -187,13 +182,6 @@ fun generateBenchmarks() {
187182 ) } + listBuilderImpls.filter(ListBuilderImplementation ::isIterable).map { listOf (
188183 ListBuilderIterateBenchmarkGenerator (it)
189184 ) }
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- )*/
197185
198186 val mapBenchmarks = mapImpls.map { listOf (
199187 MapGetBenchmarkGenerator (it),
@@ -202,12 +190,6 @@ fun generateBenchmarks() {
202190 MapRemoveBenchmarkGenerator (it),
203191 MapUtilsGenerator (it)
204192 ) }
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- )*/
211193 val mapBuilderBenchmarks = mapBuilderImpls.map { listOf (
212194 MapBuilderGetBenchmarkGenerator (it),
213195 MapBuilderPutBenchmarkGenerator (it),
@@ -216,12 +198,6 @@ fun generateBenchmarks() {
216198 ) } + mapBuilderImpls.filter(MapBuilderImplementation ::isIterable).map { listOf (
217199 MapBuilderIterateBenchmarkGenerator (it)
218200 ) }
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- )*/
225201
226202 val setBenchmarks = setImpls.map { listOf (
227203 SetAddBenchmarkGenerator (it),
@@ -230,12 +206,6 @@ fun generateBenchmarks() {
230206 SetRemoveBenchmarkGenerator (it),
231207 SetUtilsGenerator (it)
232208 ) }
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- )*/
239209 val setBuilderBenchmarks = setBuilderImpls.map { listOf (
240210 SetBuilderAddBenchmarkGenerator (it),
241211 SetBuilderContainsBenchmarkGenerator (it),
@@ -244,48 +214,38 @@ fun generateBenchmarks() {
244214 ) } + setBuilderImpls.filter(SetBuilderImplementation ::isIterable).map { listOf (
245215 SetBuilderIterateBenchmarkGenerator (it)
246216 ) }
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()
256217
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 () {
268218 val commonUtils = listOf (
269219 IntWrapperGenerator (),
270220 CommonUtilsGenerator ()
271221 )
272222
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"
275235 val file = File (BENCHMARKS_ROOT + path)
276236 file.parentFile?.mkdirs()
277237 val out = PrintWriter (file)
278- util .generate(out )
238+ generator .generate(out )
279239 out .flush()
280240 }
281241}
282242
243+
283244fun main () {
284245 Files .walk(Paths .get(BENCHMARKS_ROOT ))
285246 .sorted(Comparator .reverseOrder())
286247 .map(Path ::toFile)
287248 .forEach { it.delete() }
288249
289- generateUtils()
290250 generateBenchmarks()
291251}
0 commit comments