diff --git a/HACKING.md b/HACKING.md index 1c88a0aa56f..3a3220ec9f9 100644 --- a/HACKING.md +++ b/HACKING.md @@ -109,6 +109,12 @@ and then a final native binary is produced from this klibrary using the -Xinclud To measure performance of Kotlin/Native compiler on existing benchmarks: ./gradlew :performance:konanRun + + **NOTE**: **konanRun** task needs built compiler and libs. To test against working tree make sure to run + + ./gradlew dist distPlatformLibs + + before **konanRun** **konanRun** task can be run separately for one/several benchmark applications: @@ -257,4 +263,4 @@ konanc main.kt -Xtemporary-files-dir= -o #### Example 3. Replace predefined LLVM pipeline with Clang options. ```shell script konanc main.kt -Xdisable-phases=BitcodeOptimization -Xoverride-clang-options=-c,-O2 -``` \ No newline at end of file +``` diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/RunKotlinNativeTask.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/RunKotlinNativeTask.kt index 77683e4b269..a174a4b9d5c 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/RunKotlinNativeTask.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/RunKotlinNativeTask.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin import org.gradle.api.DefaultTask import org.gradle.api.Task import org.jetbrains.kotlin.gradle.tasks.KotlinNativeLink +import org.jetbrains.report.json.* import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.options.Option import org.gradle.api.tasks.Input @@ -19,6 +20,11 @@ open class RunKotlinNativeTask @Inject constructor(private val linkTask: Task, private val executable: String, private val outputFileName: String ) : DefaultTask() { + enum class RepeatingType { + INTERNAL, // Let the benchmark perform warmups and repeats. + EXTERNAL, // Repeat by relaunching benchmark + } + @Input @Option(option = "filter", description = "Benchmarks to run (comma-separated)") var filter: String = "" @@ -28,6 +34,12 @@ open class RunKotlinNativeTask @Inject constructor(private val linkTask: Task, @Input @Option(option = "verbose", description = "Verbose mode of running benchmarks") var verbose: Boolean = false + @Input + var warmupCount: Int = 0 + @Input + var repeatCount: Int = 0 + @Input + var repeatingType = RepeatingType.INTERNAL private val argumentsList = mutableListOf() @@ -44,9 +56,41 @@ open class RunKotlinNativeTask @Inject constructor(private val linkTask: Task, argumentsList.addAll(arguments.toList()) } + private fun execBenchmarkOnce(benchmark: String, warmupCount: Int, repeatCount: Int) : String { + val output = ByteArrayOutputStream() + project.exec { + it.executable = executable + it.args(argumentsList) + it.args("-f", benchmark) + if (verbose) { + it.args("-v") + } + it.args("-w", warmupCount.toString()) + it.args("-r", repeatCount.toString()) + it.standardOutput = output + } + return output.toString().removePrefix("[").removeSuffix("]") + } + + private fun execBenchmarkRepeatedly(benchmark: String, warmupCount: Int, repeatCount: Int) : List { + for (i in 0..warmupCount) { + execBenchmarkOnce(benchmark, 0, 1) + } + val result = mutableListOf() + for (i in 0..repeatCount) { + val benchmarkReport = JsonTreeParser.parse(execBenchmarkOnce(benchmark, 0, 1)).jsonObject + val modifiedBenchmarkReport = JsonObject(HashMap(benchmarkReport.content).apply { + put("repeat", JsonLiteral(i)) + put("warmup", JsonLiteral(warmupCount)) + }) + result.add(modifiedBenchmarkReport.toString()) + } + return result + } + @TaskAction fun run() { - var output = ByteArrayOutputStream() + val output = ByteArrayOutputStream() project.exec { it.executable = executable it.args("list") @@ -60,18 +104,11 @@ open class RunKotlinNativeTask @Inject constructor(private val linkTask: Task, benchmarks.filter { benchmark -> benchmark in filterArgs || regexes.any { it.matches(benchmark) } } } else benchmarks.filter { !it.isEmpty() } - val results = benchmarksToRun.map { benchmark -> - output = ByteArrayOutputStream() - project.exec { - it.executable = executable - it.args(argumentsList) - it.args("-f", benchmark) - if (verbose) { - it.args("-v") - } - it.standardOutput = output + val results = benchmarksToRun.flatMap { benchmark -> + when (repeatingType) { + RepeatingType.INTERNAL -> listOf(execBenchmarkOnce(benchmark, warmupCount, repeatCount)) + RepeatingType.EXTERNAL -> execBenchmarkRepeatedly(benchmark, warmupCount, repeatCount) } - output.toString().removePrefix("[").removeSuffix("]") } File(outputFileName).printWriter().use { out -> diff --git a/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt b/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt index 9b092ca02c1..87854d00884 100644 --- a/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt +++ b/build-tools/src/main/kotlin/org/jetbrains/kotlin/benchmark/BenchmarkingPlugin.kt @@ -70,6 +70,7 @@ open class BenchmarkExtension @Inject constructor(val project: Project) { var linkerOpts: Collection = emptyList() var compilerOpts: List = emptyList() var buildType: NativeBuildType = NativeBuildType.RELEASE + var repeatingType: RunKotlinNativeTask.RepeatingType = RunKotlinNativeTask.RepeatingType.INTERNAL val dependencies: BenchmarkDependencies = BenchmarkDependencies() @@ -183,11 +184,11 @@ abstract class BenchmarkingPlugin: Plugin { description = "Runs the benchmark for Kotlin/Native." } afterEvaluate { - (konanRun as RunKotlinNativeTask).args( - "-w", nativeWarmup.toString(), - "-r", attempts.toString(), - "-p", "${benchmark.applicationName}::" - ) + val task = konanRun as RunKotlinNativeTask + task.args("-p", "${benchmark.applicationName}::") + task.warmupCount = nativeWarmup + task.repeatCount = attempts + task.repeatingType = benchmark.repeatingType } return konanRun } @@ -274,4 +275,4 @@ abstract class BenchmarkingPlugin: Plugin { const val NATIVE_EXECUTABLE_NAME = "benchmark" const val BENCHMARKING_GROUP = "benchmarking" } -} \ No newline at end of file +} diff --git a/performance/build.gradle b/performance/build.gradle index e229945b4f8..3f4ed5ee9a2 100644 --- a/performance/build.gradle +++ b/performance/build.gradle @@ -233,6 +233,11 @@ task numerical { dependsOn 'numerical:konanRun' } +task startup { + dependsOn 'clean' + dependsOn 'startup:konanRun' +} + task swiftinterop { dependsOn 'clean' dependsOn 'swiftinterop:konanRun' @@ -246,4 +251,4 @@ task videoplayer { task KotlinVsSwift { dependsOn 'clean' dependsOn 'KotlinVsSwift:konanRun' -} \ No newline at end of file +} diff --git a/performance/ring/src/main/kotlin/main.kt b/performance/ring/src/main/kotlin/main.kt index 7ff25abc7e6..5163a930b85 100644 --- a/performance/ring/src/main/kotlin/main.kt +++ b/performance/ring/src/main/kotlin/main.kt @@ -174,6 +174,7 @@ class RingLauncher : Launcher() { "ParameterNotNull.invokeEightArgsWithoutNullCheck" to BenchmarkEntryWithInit.create(::ParameterNotNullAssertionBenchmark, { invokeEightArgsWithoutNullCheck() }), "PrimeList.calcDirect" to BenchmarkEntryWithInit.create(::PrimeListBenchmark, { calcDirect() }), "PrimeList.calcEratosthenes" to BenchmarkEntryWithInit.create(::PrimeListBenchmark, { calcEratosthenes() }), + "Singleton.access" to BenchmarkEntryWithInit.create(::SingletonBenchmark, { access() }), "String.stringConcat" to BenchmarkEntryWithInit.create(::StringBenchmark, { stringConcat() }), "String.stringConcatNullable" to BenchmarkEntryWithInit.create(::StringBenchmark, { stringConcatNullable() }), "String.stringBuilderConcat" to BenchmarkEntryWithInit.create(::StringBenchmark, { stringBuilderConcat() }), @@ -219,4 +220,4 @@ fun main(args: Array) { arguments.filter, arguments.filterRegex, arguments.verbose) } else emptyList() }, benchmarksListAction = launcher::benchmarksListAction) -} \ No newline at end of file +} diff --git a/performance/ring/src/main/kotlin/org/jetbrains/ring/SingletonBenchmark.kt b/performance/ring/src/main/kotlin/org/jetbrains/ring/SingletonBenchmark.kt new file mode 100644 index 00000000000..6a881fc8754 --- /dev/null +++ b/performance/ring/src/main/kotlin/org/jetbrains/ring/SingletonBenchmark.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ + +package org.jetbrains.ring + +import org.jetbrains.benchmarksLauncher.Blackhole + +private object A { + val a = Random.nextInt(100) +} + +open class SingletonBenchmark { + init { + // Make sure A is initialized. + Blackhole.consume(A.a) + } + + // Benchmark + fun access() { + for (i in 0 until BENCHMARK_SIZE) { + Blackhole.consume(A.a) + } + } +} diff --git a/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/BenchmarksCollection.kt b/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/BenchmarksCollection.kt index c82d9afc8dc..74f6209d16c 100644 --- a/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/BenchmarksCollection.kt +++ b/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/BenchmarksCollection.kt @@ -16,6 +16,8 @@ package org.jetbrains.benchmarksLauncher +import org.jetbrains.report.BenchmarkResult + interface AbstractBenchmarkEntry class BenchmarkEntryWithInit(val ctor: ()->Any, val lambda: (Any) -> Any?): AbstractBenchmarkEntry { @@ -26,5 +28,13 @@ class BenchmarkEntryWithInit(val ctor: ()->Any, val lambda: (Any) -> Any?): Abst class BenchmarkEntry(val lambda: () -> Any?) : AbstractBenchmarkEntry +// Controls warmup and repeats manually. +data class BenchmarkManualResult( + val status: BenchmarkResult.Status, + val value: Any?, + val warmupCount: Int, + val durationsNs: List) +class BenchmarkEntryManual(val lambda: () -> BenchmarkManualResult) : AbstractBenchmarkEntry + class BenchmarksCollection(private val benchmarks: MutableMap = mutableMapOf()) : MutableMap by benchmarks diff --git a/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt b/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt index 60526df130f..ac709086096 100644 --- a/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt +++ b/performance/shared/src/main/kotlin/org/jetbrains/benchmarksLauncher/launcher.kt @@ -19,6 +19,11 @@ package org.jetbrains.benchmarksLauncher import org.jetbrains.report.BenchmarkResult import kotlinx.cli.* +data class RecordTimeMeasurement( + val status: BenchmarkResult.Status, + val iteration: Int, + val warmupCount: Int, + val durationNs: Double) abstract class Launcher { abstract val benchmarks: BenchmarksCollection @@ -35,14 +40,16 @@ abstract class Launcher { while (i-- > 0) benchmark.lambda(benchmarkInstance!!) cleanup() } - } else { + } else if (benchmark is BenchmarkEntry) { cleanup() measureNanoTime { - if (benchmark is BenchmarkEntry) { - while (i-- > 0) benchmark.lambda() - cleanup() - } + while (i-- > 0) benchmark.lambda() + cleanup() } + } else if (benchmark is BenchmarkEntryManual) { + error("runBenchmark cannot run manual benchmark") + } else { + error("Unknown benchmark type $benchmark") } } @@ -60,6 +67,72 @@ abstract class Launcher { } } + fun runBenchmarkRepeatedly(logger: Logger, + numWarmIterations: Int, + numberOfAttempts: Int, + name: String, + recordMeasurement: (RecordTimeMeasurement) -> Unit, + benchmarkInstance: Any?, + benchmark: AbstractBenchmarkEntry) { + logger.log("Warm up iterations for benchmark $name\n") + runBenchmark(benchmarkInstance, benchmark, numWarmIterations) + var autoEvaluatedNumberOfMeasureIteration = 1 + while (true) { + var j = autoEvaluatedNumberOfMeasureIteration + val time = runBenchmark(benchmarkInstance, benchmark, j) + if (time >= 100L * 1_000_000) // 100ms + break + autoEvaluatedNumberOfMeasureIteration *= 2 + } + logger.log("Running benchmark $name ") + for (k in 0..numberOfAttempts) { + logger.log(".", usePrefix = false) + var i = autoEvaluatedNumberOfMeasureIteration + val time = runBenchmark(benchmarkInstance, benchmark, i) + val scaledTime = time * 1.0 / autoEvaluatedNumberOfMeasureIteration + // Save benchmark object + recordMeasurement(RecordTimeMeasurement(BenchmarkResult.Status.PASSED, k, numWarmIterations, scaledTime)) + } + logger.log("\n", usePrefix = false) + } + + fun runBenchmark(logger: Logger, + numWarmIterations: Int, + numberOfAttempts: Int, + name: String, + recordMeasurement: (RecordTimeMeasurement) -> Unit, + benchmark: AbstractBenchmarkEntry) { + when (benchmark) { + is BenchmarkEntryWithInit -> { + val benchmarkInstance = benchmark.ctor?.invoke() + runBenchmarkRepeatedly(logger, + numWarmIterations, + numberOfAttempts, + name, + recordMeasurement, + benchmarkInstance, + benchmark) + } + is BenchmarkEntry -> { + runBenchmarkRepeatedly(logger, + numWarmIterations, + numberOfAttempts, + name, + recordMeasurement, + null, + benchmark) + } + is BenchmarkEntryManual -> { + logger.log("Running manual benchmark $name") + val result = benchmark.lambda() + for ((i, durationNs) in result.durationsNs.withIndex()) { + recordMeasurement(RecordTimeMeasurement(result.status, i, result.warmupCount, durationNs)) + } + } + else -> error("unknown benchmark type $benchmark") + } + } + fun launch(numWarmIterations: Int, numberOfAttempts: Int, prefix: String = "", @@ -73,36 +146,28 @@ abstract class Launcher { val runningBenchmarks = if (filterSet.isNotEmpty() || regexes.isNotEmpty()) { benchmarks.filterKeys { benchmark -> benchmark in filterSet || regexes.any { it.matches(benchmark) } } } else benchmarks - if (runningBenchmarks.isEmpty()) + if (runningBenchmarks.isEmpty()) { + printStderr("No matching benchmarks found\n") error("No matching benchmarks found") + } val benchmarkResults = mutableListOf() for ((name, benchmark) in runningBenchmarks) { - val benchmarkInstance = (benchmark as? BenchmarkEntryWithInit)?.ctor?.invoke() - var i = numWarmIterations - logger.log("Warm up iterations for benchmark $name\n") - runBenchmark(benchmarkInstance, benchmark, i) - var autoEvaluatedNumberOfMeasureIteration = 1 - while (true) { - var j = autoEvaluatedNumberOfMeasureIteration - val time = runBenchmark(benchmarkInstance, benchmark, j) - if (time >= 100L * 1_000_000) // 100ms - break - autoEvaluatedNumberOfMeasureIteration *= 2 + val recordMeasurement : (RecordTimeMeasurement) -> Unit = { + benchmarkResults.add(BenchmarkResult( + "$prefix$name", + it.status, + it.durationNs / 1000, + BenchmarkResult.Metric.EXECUTION_TIME, + it.durationNs / 1000, + it.iteration + 1, + it.warmupCount)) } - logger.log("Running benchmark $name ") - val samples = DoubleArray(numberOfAttempts) - for (k in samples.indices) { - logger.log(".", usePrefix = false) - i = autoEvaluatedNumberOfMeasureIteration - val time = runBenchmark(benchmarkInstance, benchmark, i) - val scaledTime = time * 1.0 / autoEvaluatedNumberOfMeasureIteration - samples[k] = scaledTime - // Save benchmark object - benchmarkResults.add(BenchmarkResult("$prefix$name", BenchmarkResult.Status.PASSED, - scaledTime / 1000, BenchmarkResult.Metric.EXECUTION_TIME, scaledTime / 1000, - k + 1, numWarmIterations)) + try { + runBenchmark(logger, numWarmIterations, numberOfAttempts, name, recordMeasurement, benchmark) + } catch (e: Throwable) { + printStderr("Failure while running benchmark $name: $e\n") + throw e } - logger.log("\n", usePrefix = false) } return benchmarkResults } diff --git a/performance/startup/build.gradle.kts b/performance/startup/build.gradle.kts new file mode 100644 index 00000000000..d3592d98979 --- /dev/null +++ b/performance/startup/build.gradle.kts @@ -0,0 +1,26 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType +import org.jetbrains.kotlin.RunKotlinNativeTask + +/* + * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ + +plugins { + id("benchmarking") +} + +val defaultBuildType = NativeBuildType.RELEASE + +benchmark { + applicationName = "Startup" + commonSrcDirs = listOf("../../tools/benchmarks/shared/src", "src/main/kotlin", "../shared/src/main/kotlin") + jvmSrcDirs = listOf("src/main/kotlin-jvm", "../shared/src/main/kotlin-jvm") + nativeSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/common") + mingwSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/mingw") + posixSrcDirs = listOf("src/main/kotlin-native", "../shared/src/main/kotlin-native/posix") + buildType = (findProperty("nativeBuildType") as String?)?.let { NativeBuildType.valueOf(it) } ?: defaultBuildType + repeatingType = RunKotlinNativeTask.RepeatingType.EXTERNAL + + dependencies.common(project(":endorsedLibraries:kotlinx.cli")) +} diff --git a/performance/startup/gradle.properties b/performance/startup/gradle.properties new file mode 100644 index 00000000000..e8944cc8966 --- /dev/null +++ b/performance/startup/gradle.properties @@ -0,0 +1 @@ +kotlin.native.home=../../dist diff --git a/performance/startup/src/main/kotlin-jvm/org/jetbrains/startup/Utils.kt b/performance/startup/src/main/kotlin-jvm/org/jetbrains/startup/Utils.kt new file mode 100644 index 00000000000..f1cd8aca044 --- /dev/null +++ b/performance/startup/src/main/kotlin-jvm/org/jetbrains/startup/Utils.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ + +package org.jetbrains.startup + +actual class Random actual constructor() { + actual companion object { + actual var seedInt = 0 + actual fun nextInt(boundary: Int): Int { + seedInt = (3 * seedInt + 11) % boundary + return seedInt + } + } +} diff --git a/performance/startup/src/main/kotlin-native/org/jetbrains/startup/Utils.kt b/performance/startup/src/main/kotlin-native/org/jetbrains/startup/Utils.kt new file mode 100644 index 00000000000..a5032ae2f4b --- /dev/null +++ b/performance/startup/src/main/kotlin-native/org/jetbrains/startup/Utils.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ + +package org.jetbrains.startup + +actual class Random actual constructor() { + @kotlin.native.ThreadLocal + actual companion object { + actual var seedInt = 0 + actual fun nextInt(boundary: Int): Int { + seedInt = (3 * seedInt + 11) % boundary + return seedInt + } + } +} diff --git a/performance/startup/src/main/kotlin/main.kt b/performance/startup/src/main/kotlin/main.kt new file mode 100644 index 00000000000..223c44fe7b6 --- /dev/null +++ b/performance/startup/src/main/kotlin/main.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ + +import org.jetbrains.startup.* +import org.jetbrains.benchmarksLauncher.* +import kotlinx.cli.* + +class StartupLauncher : Launcher() { + override val benchmarks = BenchmarksCollection( + mutableMapOf( + "Singleton.initialize" to BenchmarkEntryManual(::singletonInitialize), + "Singleton.initializeNested" to BenchmarkEntryManual(::singletonInitializeNested), + ) + ) +} + +fun main(args: Array) { + val launcher = StartupLauncher() + BenchmarksRunner.runBenchmarks(args, { arguments: BenchmarkArguments -> + if (arguments is BaseBenchmarkArguments) { + launcher.launch(arguments.warmup, arguments.repeat, arguments.prefix, + arguments.filter, arguments.filterRegex, arguments.verbose) + } else emptyList() + }, benchmarksListAction = launcher::benchmarksListAction) +} diff --git a/performance/startup/src/main/kotlin/org/jetbrains/startup/SingletonInitBenchmark.kt b/performance/startup/src/main/kotlin/org/jetbrains/startup/SingletonInitBenchmark.kt new file mode 100644 index 00000000000..b26eeec48f1 --- /dev/null +++ b/performance/startup/src/main/kotlin/org/jetbrains/startup/SingletonInitBenchmark.kt @@ -0,0 +1,1544 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ + +package org.jetbrains.startup + +import org.jetbrains.benchmarksLauncher.BenchmarkManualResult +import org.jetbrains.benchmarksLauncher.measureNanoTime +import org.jetbrains.report.BenchmarkResult + +private object A0 { val a = Random.nextInt(100) } +private object A1 { val a = Random.nextInt(100) } +private object A2 { val a = Random.nextInt(100) } +private object A3 { val a = Random.nextInt(100) } +private object A4 { val a = Random.nextInt(100) } +private object A5 { val a = Random.nextInt(100) } +private object A6 { val a = Random.nextInt(100) } +private object A7 { val a = Random.nextInt(100) } +private object A8 { val a = Random.nextInt(100) } +private object A9 { val a = Random.nextInt(100) } +private object A10 { val a = Random.nextInt(100) } +private object A11 { val a = Random.nextInt(100) } +private object A12 { val a = Random.nextInt(100) } +private object A13 { val a = Random.nextInt(100) } +private object A14 { val a = Random.nextInt(100) } +private object A15 { val a = Random.nextInt(100) } +private object A16 { val a = Random.nextInt(100) } +private object A17 { val a = Random.nextInt(100) } +private object A18 { val a = Random.nextInt(100) } +private object A19 { val a = Random.nextInt(100) } +private object A20 { val a = Random.nextInt(100) } +private object A21 { val a = Random.nextInt(100) } +private object A22 { val a = Random.nextInt(100) } +private object A23 { val a = Random.nextInt(100) } +private object A24 { val a = Random.nextInt(100) } +private object A25 { val a = Random.nextInt(100) } +private object A26 { val a = Random.nextInt(100) } +private object A27 { val a = Random.nextInt(100) } +private object A28 { val a = Random.nextInt(100) } +private object A29 { val a = Random.nextInt(100) } +private object A30 { val a = Random.nextInt(100) } +private object A31 { val a = Random.nextInt(100) } +private object A32 { val a = Random.nextInt(100) } +private object A33 { val a = Random.nextInt(100) } +private object A34 { val a = Random.nextInt(100) } +private object A35 { val a = Random.nextInt(100) } +private object A36 { val a = Random.nextInt(100) } +private object A37 { val a = Random.nextInt(100) } +private object A38 { val a = Random.nextInt(100) } +private object A39 { val a = Random.nextInt(100) } +private object A40 { val a = Random.nextInt(100) } +private object A41 { val a = Random.nextInt(100) } +private object A42 { val a = Random.nextInt(100) } +private object A43 { val a = Random.nextInt(100) } +private object A44 { val a = Random.nextInt(100) } +private object A45 { val a = Random.nextInt(100) } +private object A46 { val a = Random.nextInt(100) } +private object A47 { val a = Random.nextInt(100) } +private object A48 { val a = Random.nextInt(100) } +private object A49 { val a = Random.nextInt(100) } +private object A50 { val a = Random.nextInt(100) } +private object A51 { val a = Random.nextInt(100) } +private object A52 { val a = Random.nextInt(100) } +private object A53 { val a = Random.nextInt(100) } +private object A54 { val a = Random.nextInt(100) } +private object A55 { val a = Random.nextInt(100) } +private object A56 { val a = Random.nextInt(100) } +private object A57 { val a = Random.nextInt(100) } +private object A58 { val a = Random.nextInt(100) } +private object A59 { val a = Random.nextInt(100) } +private object A60 { val a = Random.nextInt(100) } +private object A61 { val a = Random.nextInt(100) } +private object A62 { val a = Random.nextInt(100) } +private object A63 { val a = Random.nextInt(100) } +private object A64 { val a = Random.nextInt(100) } +private object A65 { val a = Random.nextInt(100) } +private object A66 { val a = Random.nextInt(100) } +private object A67 { val a = Random.nextInt(100) } +private object A68 { val a = Random.nextInt(100) } +private object A69 { val a = Random.nextInt(100) } +private object A70 { val a = Random.nextInt(100) } +private object A71 { val a = Random.nextInt(100) } +private object A72 { val a = Random.nextInt(100) } +private object A73 { val a = Random.nextInt(100) } +private object A74 { val a = Random.nextInt(100) } +private object A75 { val a = Random.nextInt(100) } +private object A76 { val a = Random.nextInt(100) } +private object A77 { val a = Random.nextInt(100) } +private object A78 { val a = Random.nextInt(100) } +private object A79 { val a = Random.nextInt(100) } +private object A80 { val a = Random.nextInt(100) } +private object A81 { val a = Random.nextInt(100) } +private object A82 { val a = Random.nextInt(100) } +private object A83 { val a = Random.nextInt(100) } +private object A84 { val a = Random.nextInt(100) } +private object A85 { val a = Random.nextInt(100) } +private object A86 { val a = Random.nextInt(100) } +private object A87 { val a = Random.nextInt(100) } +private object A88 { val a = Random.nextInt(100) } +private object A89 { val a = Random.nextInt(100) } +private object A90 { val a = Random.nextInt(100) } +private object A91 { val a = Random.nextInt(100) } +private object A92 { val a = Random.nextInt(100) } +private object A93 { val a = Random.nextInt(100) } +private object A94 { val a = Random.nextInt(100) } +private object A95 { val a = Random.nextInt(100) } +private object A96 { val a = Random.nextInt(100) } +private object A97 { val a = Random.nextInt(100) } +private object A98 { val a = Random.nextInt(100) } +private object A99 { val a = Random.nextInt(100) } +private object A100 { val a = Random.nextInt(100) } +private object A101 { val a = Random.nextInt(100) } +private object A102 { val a = Random.nextInt(100) } +private object A103 { val a = Random.nextInt(100) } +private object A104 { val a = Random.nextInt(100) } +private object A105 { val a = Random.nextInt(100) } +private object A106 { val a = Random.nextInt(100) } +private object A107 { val a = Random.nextInt(100) } +private object A108 { val a = Random.nextInt(100) } +private object A109 { val a = Random.nextInt(100) } +private object A110 { val a = Random.nextInt(100) } +private object A111 { val a = Random.nextInt(100) } +private object A112 { val a = Random.nextInt(100) } +private object A113 { val a = Random.nextInt(100) } +private object A114 { val a = Random.nextInt(100) } +private object A115 { val a = Random.nextInt(100) } +private object A116 { val a = Random.nextInt(100) } +private object A117 { val a = Random.nextInt(100) } +private object A118 { val a = Random.nextInt(100) } +private object A119 { val a = Random.nextInt(100) } +private object A120 { val a = Random.nextInt(100) } +private object A121 { val a = Random.nextInt(100) } +private object A122 { val a = Random.nextInt(100) } +private object A123 { val a = Random.nextInt(100) } +private object A124 { val a = Random.nextInt(100) } +private object A125 { val a = Random.nextInt(100) } +private object A126 { val a = Random.nextInt(100) } +private object A127 { val a = Random.nextInt(100) } +private object A128 { val a = Random.nextInt(100) } +private object A129 { val a = Random.nextInt(100) } +private object A130 { val a = Random.nextInt(100) } +private object A131 { val a = Random.nextInt(100) } +private object A132 { val a = Random.nextInt(100) } +private object A133 { val a = Random.nextInt(100) } +private object A134 { val a = Random.nextInt(100) } +private object A135 { val a = Random.nextInt(100) } +private object A136 { val a = Random.nextInt(100) } +private object A137 { val a = Random.nextInt(100) } +private object A138 { val a = Random.nextInt(100) } +private object A139 { val a = Random.nextInt(100) } +private object A140 { val a = Random.nextInt(100) } +private object A141 { val a = Random.nextInt(100) } +private object A142 { val a = Random.nextInt(100) } +private object A143 { val a = Random.nextInt(100) } +private object A144 { val a = Random.nextInt(100) } +private object A145 { val a = Random.nextInt(100) } +private object A146 { val a = Random.nextInt(100) } +private object A147 { val a = Random.nextInt(100) } +private object A148 { val a = Random.nextInt(100) } +private object A149 { val a = Random.nextInt(100) } +private object A150 { val a = Random.nextInt(100) } +private object A151 { val a = Random.nextInt(100) } +private object A152 { val a = Random.nextInt(100) } +private object A153 { val a = Random.nextInt(100) } +private object A154 { val a = Random.nextInt(100) } +private object A155 { val a = Random.nextInt(100) } +private object A156 { val a = Random.nextInt(100) } +private object A157 { val a = Random.nextInt(100) } +private object A158 { val a = Random.nextInt(100) } +private object A159 { val a = Random.nextInt(100) } +private object A160 { val a = Random.nextInt(100) } +private object A161 { val a = Random.nextInt(100) } +private object A162 { val a = Random.nextInt(100) } +private object A163 { val a = Random.nextInt(100) } +private object A164 { val a = Random.nextInt(100) } +private object A165 { val a = Random.nextInt(100) } +private object A166 { val a = Random.nextInt(100) } +private object A167 { val a = Random.nextInt(100) } +private object A168 { val a = Random.nextInt(100) } +private object A169 { val a = Random.nextInt(100) } +private object A170 { val a = Random.nextInt(100) } +private object A171 { val a = Random.nextInt(100) } +private object A172 { val a = Random.nextInt(100) } +private object A173 { val a = Random.nextInt(100) } +private object A174 { val a = Random.nextInt(100) } +private object A175 { val a = Random.nextInt(100) } +private object A176 { val a = Random.nextInt(100) } +private object A177 { val a = Random.nextInt(100) } +private object A178 { val a = Random.nextInt(100) } +private object A179 { val a = Random.nextInt(100) } +private object A180 { val a = Random.nextInt(100) } +private object A181 { val a = Random.nextInt(100) } +private object A182 { val a = Random.nextInt(100) } +private object A183 { val a = Random.nextInt(100) } +private object A184 { val a = Random.nextInt(100) } +private object A185 { val a = Random.nextInt(100) } +private object A186 { val a = Random.nextInt(100) } +private object A187 { val a = Random.nextInt(100) } +private object A188 { val a = Random.nextInt(100) } +private object A189 { val a = Random.nextInt(100) } +private object A190 { val a = Random.nextInt(100) } +private object A191 { val a = Random.nextInt(100) } +private object A192 { val a = Random.nextInt(100) } +private object A193 { val a = Random.nextInt(100) } +private object A194 { val a = Random.nextInt(100) } +private object A195 { val a = Random.nextInt(100) } +private object A196 { val a = Random.nextInt(100) } +private object A197 { val a = Random.nextInt(100) } +private object A198 { val a = Random.nextInt(100) } +private object A199 { val a = Random.nextInt(100) } +private object A200 { val a = Random.nextInt(100) } +private object A201 { val a = Random.nextInt(100) } +private object A202 { val a = Random.nextInt(100) } +private object A203 { val a = Random.nextInt(100) } +private object A204 { val a = Random.nextInt(100) } +private object A205 { val a = Random.nextInt(100) } +private object A206 { val a = Random.nextInt(100) } +private object A207 { val a = Random.nextInt(100) } +private object A208 { val a = Random.nextInt(100) } +private object A209 { val a = Random.nextInt(100) } +private object A210 { val a = Random.nextInt(100) } +private object A211 { val a = Random.nextInt(100) } +private object A212 { val a = Random.nextInt(100) } +private object A213 { val a = Random.nextInt(100) } +private object A214 { val a = Random.nextInt(100) } +private object A215 { val a = Random.nextInt(100) } +private object A216 { val a = Random.nextInt(100) } +private object A217 { val a = Random.nextInt(100) } +private object A218 { val a = Random.nextInt(100) } +private object A219 { val a = Random.nextInt(100) } +private object A220 { val a = Random.nextInt(100) } +private object A221 { val a = Random.nextInt(100) } +private object A222 { val a = Random.nextInt(100) } +private object A223 { val a = Random.nextInt(100) } +private object A224 { val a = Random.nextInt(100) } +private object A225 { val a = Random.nextInt(100) } +private object A226 { val a = Random.nextInt(100) } +private object A227 { val a = Random.nextInt(100) } +private object A228 { val a = Random.nextInt(100) } +private object A229 { val a = Random.nextInt(100) } +private object A230 { val a = Random.nextInt(100) } +private object A231 { val a = Random.nextInt(100) } +private object A232 { val a = Random.nextInt(100) } +private object A233 { val a = Random.nextInt(100) } +private object A234 { val a = Random.nextInt(100) } +private object A235 { val a = Random.nextInt(100) } +private object A236 { val a = Random.nextInt(100) } +private object A237 { val a = Random.nextInt(100) } +private object A238 { val a = Random.nextInt(100) } +private object A239 { val a = Random.nextInt(100) } +private object A240 { val a = Random.nextInt(100) } +private object A241 { val a = Random.nextInt(100) } +private object A242 { val a = Random.nextInt(100) } +private object A243 { val a = Random.nextInt(100) } +private object A244 { val a = Random.nextInt(100) } +private object A245 { val a = Random.nextInt(100) } +private object A246 { val a = Random.nextInt(100) } +private object A247 { val a = Random.nextInt(100) } +private object A248 { val a = Random.nextInt(100) } +private object A249 { val a = Random.nextInt(100) } +private object A250 { val a = Random.nextInt(100) } +private object A251 { val a = Random.nextInt(100) } +private object A252 { val a = Random.nextInt(100) } +private object A253 { val a = Random.nextInt(100) } +private object A254 { val a = Random.nextInt(100) } +private object A255 { val a = Random.nextInt(100) } +private object A256 { val a = Random.nextInt(100) } +private object A257 { val a = Random.nextInt(100) } +private object A258 { val a = Random.nextInt(100) } +private object A259 { val a = Random.nextInt(100) } +private object A260 { val a = Random.nextInt(100) } +private object A261 { val a = Random.nextInt(100) } +private object A262 { val a = Random.nextInt(100) } +private object A263 { val a = Random.nextInt(100) } +private object A264 { val a = Random.nextInt(100) } +private object A265 { val a = Random.nextInt(100) } +private object A266 { val a = Random.nextInt(100) } +private object A267 { val a = Random.nextInt(100) } +private object A268 { val a = Random.nextInt(100) } +private object A269 { val a = Random.nextInt(100) } +private object A270 { val a = Random.nextInt(100) } +private object A271 { val a = Random.nextInt(100) } +private object A272 { val a = Random.nextInt(100) } +private object A273 { val a = Random.nextInt(100) } +private object A274 { val a = Random.nextInt(100) } +private object A275 { val a = Random.nextInt(100) } +private object A276 { val a = Random.nextInt(100) } +private object A277 { val a = Random.nextInt(100) } +private object A278 { val a = Random.nextInt(100) } +private object A279 { val a = Random.nextInt(100) } +private object A280 { val a = Random.nextInt(100) } +private object A281 { val a = Random.nextInt(100) } +private object A282 { val a = Random.nextInt(100) } +private object A283 { val a = Random.nextInt(100) } +private object A284 { val a = Random.nextInt(100) } +private object A285 { val a = Random.nextInt(100) } +private object A286 { val a = Random.nextInt(100) } +private object A287 { val a = Random.nextInt(100) } +private object A288 { val a = Random.nextInt(100) } +private object A289 { val a = Random.nextInt(100) } +private object A290 { val a = Random.nextInt(100) } +private object A291 { val a = Random.nextInt(100) } +private object A292 { val a = Random.nextInt(100) } +private object A293 { val a = Random.nextInt(100) } +private object A294 { val a = Random.nextInt(100) } +private object A295 { val a = Random.nextInt(100) } +private object A296 { val a = Random.nextInt(100) } +private object A297 { val a = Random.nextInt(100) } +private object A298 { val a = Random.nextInt(100) } +private object A299 { val a = Random.nextInt(100) } +private object A300 { val a = Random.nextInt(100) } +private object A301 { val a = Random.nextInt(100) } +private object A302 { val a = Random.nextInt(100) } +private object A303 { val a = Random.nextInt(100) } +private object A304 { val a = Random.nextInt(100) } +private object A305 { val a = Random.nextInt(100) } +private object A306 { val a = Random.nextInt(100) } +private object A307 { val a = Random.nextInt(100) } +private object A308 { val a = Random.nextInt(100) } +private object A309 { val a = Random.nextInt(100) } +private object A310 { val a = Random.nextInt(100) } +private object A311 { val a = Random.nextInt(100) } +private object A312 { val a = Random.nextInt(100) } +private object A313 { val a = Random.nextInt(100) } +private object A314 { val a = Random.nextInt(100) } +private object A315 { val a = Random.nextInt(100) } +private object A316 { val a = Random.nextInt(100) } +private object A317 { val a = Random.nextInt(100) } +private object A318 { val a = Random.nextInt(100) } +private object A319 { val a = Random.nextInt(100) } +private object A320 { val a = Random.nextInt(100) } +private object A321 { val a = Random.nextInt(100) } +private object A322 { val a = Random.nextInt(100) } +private object A323 { val a = Random.nextInt(100) } +private object A324 { val a = Random.nextInt(100) } +private object A325 { val a = Random.nextInt(100) } +private object A326 { val a = Random.nextInt(100) } +private object A327 { val a = Random.nextInt(100) } +private object A328 { val a = Random.nextInt(100) } +private object A329 { val a = Random.nextInt(100) } +private object A330 { val a = Random.nextInt(100) } +private object A331 { val a = Random.nextInt(100) } +private object A332 { val a = Random.nextInt(100) } +private object A333 { val a = Random.nextInt(100) } +private object A334 { val a = Random.nextInt(100) } +private object A335 { val a = Random.nextInt(100) } +private object A336 { val a = Random.nextInt(100) } +private object A337 { val a = Random.nextInt(100) } +private object A338 { val a = Random.nextInt(100) } +private object A339 { val a = Random.nextInt(100) } +private object A340 { val a = Random.nextInt(100) } +private object A341 { val a = Random.nextInt(100) } +private object A342 { val a = Random.nextInt(100) } +private object A343 { val a = Random.nextInt(100) } +private object A344 { val a = Random.nextInt(100) } +private object A345 { val a = Random.nextInt(100) } +private object A346 { val a = Random.nextInt(100) } +private object A347 { val a = Random.nextInt(100) } +private object A348 { val a = Random.nextInt(100) } +private object A349 { val a = Random.nextInt(100) } +private object A350 { val a = Random.nextInt(100) } +private object A351 { val a = Random.nextInt(100) } +private object A352 { val a = Random.nextInt(100) } +private object A353 { val a = Random.nextInt(100) } +private object A354 { val a = Random.nextInt(100) } +private object A355 { val a = Random.nextInt(100) } +private object A356 { val a = Random.nextInt(100) } +private object A357 { val a = Random.nextInt(100) } +private object A358 { val a = Random.nextInt(100) } +private object A359 { val a = Random.nextInt(100) } +private object A360 { val a = Random.nextInt(100) } +private object A361 { val a = Random.nextInt(100) } +private object A362 { val a = Random.nextInt(100) } +private object A363 { val a = Random.nextInt(100) } +private object A364 { val a = Random.nextInt(100) } +private object A365 { val a = Random.nextInt(100) } +private object A366 { val a = Random.nextInt(100) } +private object A367 { val a = Random.nextInt(100) } +private object A368 { val a = Random.nextInt(100) } +private object A369 { val a = Random.nextInt(100) } +private object A370 { val a = Random.nextInt(100) } +private object A371 { val a = Random.nextInt(100) } +private object A372 { val a = Random.nextInt(100) } +private object A373 { val a = Random.nextInt(100) } +private object A374 { val a = Random.nextInt(100) } +private object A375 { val a = Random.nextInt(100) } +private object A376 { val a = Random.nextInt(100) } +private object A377 { val a = Random.nextInt(100) } +private object A378 { val a = Random.nextInt(100) } +private object A379 { val a = Random.nextInt(100) } +private object A380 { val a = Random.nextInt(100) } +private object A381 { val a = Random.nextInt(100) } +private object A382 { val a = Random.nextInt(100) } +private object A383 { val a = Random.nextInt(100) } +private object A384 { val a = Random.nextInt(100) } +private object A385 { val a = Random.nextInt(100) } +private object A386 { val a = Random.nextInt(100) } +private object A387 { val a = Random.nextInt(100) } +private object A388 { val a = Random.nextInt(100) } +private object A389 { val a = Random.nextInt(100) } +private object A390 { val a = Random.nextInt(100) } +private object A391 { val a = Random.nextInt(100) } +private object A392 { val a = Random.nextInt(100) } +private object A393 { val a = Random.nextInt(100) } +private object A394 { val a = Random.nextInt(100) } +private object A395 { val a = Random.nextInt(100) } +private object A396 { val a = Random.nextInt(100) } +private object A397 { val a = Random.nextInt(100) } +private object A398 { val a = Random.nextInt(100) } +private object A399 { val a = Random.nextInt(100) } +private object A400 { val a = Random.nextInt(100) } +private object A401 { val a = Random.nextInt(100) } +private object A402 { val a = Random.nextInt(100) } +private object A403 { val a = Random.nextInt(100) } +private object A404 { val a = Random.nextInt(100) } +private object A405 { val a = Random.nextInt(100) } +private object A406 { val a = Random.nextInt(100) } +private object A407 { val a = Random.nextInt(100) } +private object A408 { val a = Random.nextInt(100) } +private object A409 { val a = Random.nextInt(100) } +private object A410 { val a = Random.nextInt(100) } +private object A411 { val a = Random.nextInt(100) } +private object A412 { val a = Random.nextInt(100) } +private object A413 { val a = Random.nextInt(100) } +private object A414 { val a = Random.nextInt(100) } +private object A415 { val a = Random.nextInt(100) } +private object A416 { val a = Random.nextInt(100) } +private object A417 { val a = Random.nextInt(100) } +private object A418 { val a = Random.nextInt(100) } +private object A419 { val a = Random.nextInt(100) } +private object A420 { val a = Random.nextInt(100) } +private object A421 { val a = Random.nextInt(100) } +private object A422 { val a = Random.nextInt(100) } +private object A423 { val a = Random.nextInt(100) } +private object A424 { val a = Random.nextInt(100) } +private object A425 { val a = Random.nextInt(100) } +private object A426 { val a = Random.nextInt(100) } +private object A427 { val a = Random.nextInt(100) } +private object A428 { val a = Random.nextInt(100) } +private object A429 { val a = Random.nextInt(100) } +private object A430 { val a = Random.nextInt(100) } +private object A431 { val a = Random.nextInt(100) } +private object A432 { val a = Random.nextInt(100) } +private object A433 { val a = Random.nextInt(100) } +private object A434 { val a = Random.nextInt(100) } +private object A435 { val a = Random.nextInt(100) } +private object A436 { val a = Random.nextInt(100) } +private object A437 { val a = Random.nextInt(100) } +private object A438 { val a = Random.nextInt(100) } +private object A439 { val a = Random.nextInt(100) } +private object A440 { val a = Random.nextInt(100) } +private object A441 { val a = Random.nextInt(100) } +private object A442 { val a = Random.nextInt(100) } +private object A443 { val a = Random.nextInt(100) } +private object A444 { val a = Random.nextInt(100) } +private object A445 { val a = Random.nextInt(100) } +private object A446 { val a = Random.nextInt(100) } +private object A447 { val a = Random.nextInt(100) } +private object A448 { val a = Random.nextInt(100) } +private object A449 { val a = Random.nextInt(100) } +private object A450 { val a = Random.nextInt(100) } +private object A451 { val a = Random.nextInt(100) } +private object A452 { val a = Random.nextInt(100) } +private object A453 { val a = Random.nextInt(100) } +private object A454 { val a = Random.nextInt(100) } +private object A455 { val a = Random.nextInt(100) } +private object A456 { val a = Random.nextInt(100) } +private object A457 { val a = Random.nextInt(100) } +private object A458 { val a = Random.nextInt(100) } +private object A459 { val a = Random.nextInt(100) } +private object A460 { val a = Random.nextInt(100) } +private object A461 { val a = Random.nextInt(100) } +private object A462 { val a = Random.nextInt(100) } +private object A463 { val a = Random.nextInt(100) } +private object A464 { val a = Random.nextInt(100) } +private object A465 { val a = Random.nextInt(100) } +private object A466 { val a = Random.nextInt(100) } +private object A467 { val a = Random.nextInt(100) } +private object A468 { val a = Random.nextInt(100) } +private object A469 { val a = Random.nextInt(100) } +private object A470 { val a = Random.nextInt(100) } +private object A471 { val a = Random.nextInt(100) } +private object A472 { val a = Random.nextInt(100) } +private object A473 { val a = Random.nextInt(100) } +private object A474 { val a = Random.nextInt(100) } +private object A475 { val a = Random.nextInt(100) } +private object A476 { val a = Random.nextInt(100) } +private object A477 { val a = Random.nextInt(100) } +private object A478 { val a = Random.nextInt(100) } +private object A479 { val a = Random.nextInt(100) } +private object A480 { val a = Random.nextInt(100) } +private object A481 { val a = Random.nextInt(100) } +private object A482 { val a = Random.nextInt(100) } +private object A483 { val a = Random.nextInt(100) } +private object A484 { val a = Random.nextInt(100) } +private object A485 { val a = Random.nextInt(100) } +private object A486 { val a = Random.nextInt(100) } +private object A487 { val a = Random.nextInt(100) } +private object A488 { val a = Random.nextInt(100) } +private object A489 { val a = Random.nextInt(100) } +private object A490 { val a = Random.nextInt(100) } +private object A491 { val a = Random.nextInt(100) } +private object A492 { val a = Random.nextInt(100) } +private object A493 { val a = Random.nextInt(100) } +private object A494 { val a = Random.nextInt(100) } +private object A495 { val a = Random.nextInt(100) } +private object A496 { val a = Random.nextInt(100) } +private object A497 { val a = Random.nextInt(100) } +private object A498 { val a = Random.nextInt(100) } +private object A499 { val a = Random.nextInt(100) } + +private var singletonInitializeRun = false +// Benchmark +fun singletonInitialize(): BenchmarkManualResult { + if (singletonInitializeRun) { + return BenchmarkManualResult(BenchmarkResult.Status.FAILED, 0, 0, listOf(0.0)) + } + singletonInitializeRun = true + + var total = 0 + + val time = measureNanoTime { + total += A0.a + total += A1.a + total += A2.a + total += A3.a + total += A4.a + total += A5.a + total += A6.a + total += A7.a + total += A8.a + total += A9.a + total += A10.a + total += A11.a + total += A12.a + total += A13.a + total += A14.a + total += A15.a + total += A16.a + total += A17.a + total += A18.a + total += A19.a + total += A20.a + total += A21.a + total += A22.a + total += A23.a + total += A24.a + total += A25.a + total += A26.a + total += A27.a + total += A28.a + total += A29.a + total += A30.a + total += A31.a + total += A32.a + total += A33.a + total += A34.a + total += A35.a + total += A36.a + total += A37.a + total += A38.a + total += A39.a + total += A40.a + total += A41.a + total += A42.a + total += A43.a + total += A44.a + total += A45.a + total += A46.a + total += A47.a + total += A48.a + total += A49.a + total += A50.a + total += A51.a + total += A52.a + total += A53.a + total += A54.a + total += A55.a + total += A56.a + total += A57.a + total += A58.a + total += A59.a + total += A60.a + total += A61.a + total += A62.a + total += A63.a + total += A64.a + total += A65.a + total += A66.a + total += A67.a + total += A68.a + total += A69.a + total += A70.a + total += A71.a + total += A72.a + total += A73.a + total += A74.a + total += A75.a + total += A76.a + total += A77.a + total += A78.a + total += A79.a + total += A80.a + total += A81.a + total += A82.a + total += A83.a + total += A84.a + total += A85.a + total += A86.a + total += A87.a + total += A88.a + total += A89.a + total += A90.a + total += A91.a + total += A92.a + total += A93.a + total += A94.a + total += A95.a + total += A96.a + total += A97.a + total += A98.a + total += A99.a + total += A100.a + total += A101.a + total += A102.a + total += A103.a + total += A104.a + total += A105.a + total += A106.a + total += A107.a + total += A108.a + total += A109.a + total += A110.a + total += A111.a + total += A112.a + total += A113.a + total += A114.a + total += A115.a + total += A116.a + total += A117.a + total += A118.a + total += A119.a + total += A120.a + total += A121.a + total += A122.a + total += A123.a + total += A124.a + total += A125.a + total += A126.a + total += A127.a + total += A128.a + total += A129.a + total += A130.a + total += A131.a + total += A132.a + total += A133.a + total += A134.a + total += A135.a + total += A136.a + total += A137.a + total += A138.a + total += A139.a + total += A140.a + total += A141.a + total += A142.a + total += A143.a + total += A144.a + total += A145.a + total += A146.a + total += A147.a + total += A148.a + total += A149.a + total += A150.a + total += A151.a + total += A152.a + total += A153.a + total += A154.a + total += A155.a + total += A156.a + total += A157.a + total += A158.a + total += A159.a + total += A160.a + total += A161.a + total += A162.a + total += A163.a + total += A164.a + total += A165.a + total += A166.a + total += A167.a + total += A168.a + total += A169.a + total += A170.a + total += A171.a + total += A172.a + total += A173.a + total += A174.a + total += A175.a + total += A176.a + total += A177.a + total += A178.a + total += A179.a + total += A180.a + total += A181.a + total += A182.a + total += A183.a + total += A184.a + total += A185.a + total += A186.a + total += A187.a + total += A188.a + total += A189.a + total += A190.a + total += A191.a + total += A192.a + total += A193.a + total += A194.a + total += A195.a + total += A196.a + total += A197.a + total += A198.a + total += A199.a + total += A200.a + total += A201.a + total += A202.a + total += A203.a + total += A204.a + total += A205.a + total += A206.a + total += A207.a + total += A208.a + total += A209.a + total += A210.a + total += A211.a + total += A212.a + total += A213.a + total += A214.a + total += A215.a + total += A216.a + total += A217.a + total += A218.a + total += A219.a + total += A220.a + total += A221.a + total += A222.a + total += A223.a + total += A224.a + total += A225.a + total += A226.a + total += A227.a + total += A228.a + total += A229.a + total += A230.a + total += A231.a + total += A232.a + total += A233.a + total += A234.a + total += A235.a + total += A236.a + total += A237.a + total += A238.a + total += A239.a + total += A240.a + total += A241.a + total += A242.a + total += A243.a + total += A244.a + total += A245.a + total += A246.a + total += A247.a + total += A248.a + total += A249.a + total += A250.a + total += A251.a + total += A252.a + total += A253.a + total += A254.a + total += A255.a + total += A256.a + total += A257.a + total += A258.a + total += A259.a + total += A260.a + total += A261.a + total += A262.a + total += A263.a + total += A264.a + total += A265.a + total += A266.a + total += A267.a + total += A268.a + total += A269.a + total += A270.a + total += A271.a + total += A272.a + total += A273.a + total += A274.a + total += A275.a + total += A276.a + total += A277.a + total += A278.a + total += A279.a + total += A280.a + total += A281.a + total += A282.a + total += A283.a + total += A284.a + total += A285.a + total += A286.a + total += A287.a + total += A288.a + total += A289.a + total += A290.a + total += A291.a + total += A292.a + total += A293.a + total += A294.a + total += A295.a + total += A296.a + total += A297.a + total += A298.a + total += A299.a + total += A300.a + total += A301.a + total += A302.a + total += A303.a + total += A304.a + total += A305.a + total += A306.a + total += A307.a + total += A308.a + total += A309.a + total += A310.a + total += A311.a + total += A312.a + total += A313.a + total += A314.a + total += A315.a + total += A316.a + total += A317.a + total += A318.a + total += A319.a + total += A320.a + total += A321.a + total += A322.a + total += A323.a + total += A324.a + total += A325.a + total += A326.a + total += A327.a + total += A328.a + total += A329.a + total += A330.a + total += A331.a + total += A332.a + total += A333.a + total += A334.a + total += A335.a + total += A336.a + total += A337.a + total += A338.a + total += A339.a + total += A340.a + total += A341.a + total += A342.a + total += A343.a + total += A344.a + total += A345.a + total += A346.a + total += A347.a + total += A348.a + total += A349.a + total += A350.a + total += A351.a + total += A352.a + total += A353.a + total += A354.a + total += A355.a + total += A356.a + total += A357.a + total += A358.a + total += A359.a + total += A360.a + total += A361.a + total += A362.a + total += A363.a + total += A364.a + total += A365.a + total += A366.a + total += A367.a + total += A368.a + total += A369.a + total += A370.a + total += A371.a + total += A372.a + total += A373.a + total += A374.a + total += A375.a + total += A376.a + total += A377.a + total += A378.a + total += A379.a + total += A380.a + total += A381.a + total += A382.a + total += A383.a + total += A384.a + total += A385.a + total += A386.a + total += A387.a + total += A388.a + total += A389.a + total += A390.a + total += A391.a + total += A392.a + total += A393.a + total += A394.a + total += A395.a + total += A396.a + total += A397.a + total += A398.a + total += A399.a + total += A400.a + total += A401.a + total += A402.a + total += A403.a + total += A404.a + total += A405.a + total += A406.a + total += A407.a + total += A408.a + total += A409.a + total += A410.a + total += A411.a + total += A412.a + total += A413.a + total += A414.a + total += A415.a + total += A416.a + total += A417.a + total += A418.a + total += A419.a + total += A420.a + total += A421.a + total += A422.a + total += A423.a + total += A424.a + total += A425.a + total += A426.a + total += A427.a + total += A428.a + total += A429.a + total += A430.a + total += A431.a + total += A432.a + total += A433.a + total += A434.a + total += A435.a + total += A436.a + total += A437.a + total += A438.a + total += A439.a + total += A440.a + total += A441.a + total += A442.a + total += A443.a + total += A444.a + total += A445.a + total += A446.a + total += A447.a + total += A448.a + total += A449.a + total += A450.a + total += A451.a + total += A452.a + total += A453.a + total += A454.a + total += A455.a + total += A456.a + total += A457.a + total += A458.a + total += A459.a + total += A460.a + total += A461.a + total += A462.a + total += A463.a + total += A464.a + total += A465.a + total += A466.a + total += A467.a + total += A468.a + total += A469.a + total += A470.a + total += A471.a + total += A472.a + total += A473.a + total += A474.a + total += A475.a + total += A476.a + total += A477.a + total += A478.a + total += A479.a + total += A480.a + total += A481.a + total += A482.a + total += A483.a + total += A484.a + total += A485.a + total += A486.a + total += A487.a + total += A488.a + total += A489.a + total += A490.a + total += A491.a + total += A492.a + total += A493.a + total += A494.a + total += A495.a + total += A496.a + total += A497.a + total += A498.a + total += A499.a + }.toDouble() / 500 + + return BenchmarkManualResult(BenchmarkResult.Status.PASSED, total, 0, listOf(time)) +} + +private object B0 { val a = Random.nextInt(100) } +private object B1 { val a = B0.a + Random.nextInt(100) } +private object B2 { val a = B1.a + Random.nextInt(100) } +private object B3 { val a = B2.a + Random.nextInt(100) } +private object B4 { val a = B3.a + Random.nextInt(100) } +private object B5 { val a = B4.a + Random.nextInt(100) } +private object B6 { val a = B5.a + Random.nextInt(100) } +private object B7 { val a = B6.a + Random.nextInt(100) } +private object B8 { val a = B7.a + Random.nextInt(100) } +private object B9 { val a = B8.a + Random.nextInt(100) } +private object B10 { val a = B9.a + Random.nextInt(100) } +private object B11 { val a = B10.a + Random.nextInt(100) } +private object B12 { val a = B11.a + Random.nextInt(100) } +private object B13 { val a = B12.a + Random.nextInt(100) } +private object B14 { val a = B13.a + Random.nextInt(100) } +private object B15 { val a = B14.a + Random.nextInt(100) } +private object B16 { val a = B15.a + Random.nextInt(100) } +private object B17 { val a = B16.a + Random.nextInt(100) } +private object B18 { val a = B17.a + Random.nextInt(100) } +private object B19 { val a = B18.a + Random.nextInt(100) } +private object B20 { val a = B19.a + Random.nextInt(100) } +private object B21 { val a = B20.a + Random.nextInt(100) } +private object B22 { val a = B21.a + Random.nextInt(100) } +private object B23 { val a = B22.a + Random.nextInt(100) } +private object B24 { val a = B23.a + Random.nextInt(100) } +private object B25 { val a = B24.a + Random.nextInt(100) } +private object B26 { val a = B25.a + Random.nextInt(100) } +private object B27 { val a = B26.a + Random.nextInt(100) } +private object B28 { val a = B27.a + Random.nextInt(100) } +private object B29 { val a = B28.a + Random.nextInt(100) } +private object B30 { val a = B29.a + Random.nextInt(100) } +private object B31 { val a = B30.a + Random.nextInt(100) } +private object B32 { val a = B31.a + Random.nextInt(100) } +private object B33 { val a = B32.a + Random.nextInt(100) } +private object B34 { val a = B33.a + Random.nextInt(100) } +private object B35 { val a = B34.a + Random.nextInt(100) } +private object B36 { val a = B35.a + Random.nextInt(100) } +private object B37 { val a = B36.a + Random.nextInt(100) } +private object B38 { val a = B37.a + Random.nextInt(100) } +private object B39 { val a = B38.a + Random.nextInt(100) } +private object B40 { val a = B39.a + Random.nextInt(100) } +private object B41 { val a = B40.a + Random.nextInt(100) } +private object B42 { val a = B41.a + Random.nextInt(100) } +private object B43 { val a = B42.a + Random.nextInt(100) } +private object B44 { val a = B43.a + Random.nextInt(100) } +private object B45 { val a = B44.a + Random.nextInt(100) } +private object B46 { val a = B45.a + Random.nextInt(100) } +private object B47 { val a = B46.a + Random.nextInt(100) } +private object B48 { val a = B47.a + Random.nextInt(100) } +private object B49 { val a = B48.a + Random.nextInt(100) } +private object B50 { val a = B49.a + Random.nextInt(100) } +private object B51 { val a = B50.a + Random.nextInt(100) } +private object B52 { val a = B51.a + Random.nextInt(100) } +private object B53 { val a = B52.a + Random.nextInt(100) } +private object B54 { val a = B53.a + Random.nextInt(100) } +private object B55 { val a = B54.a + Random.nextInt(100) } +private object B56 { val a = B55.a + Random.nextInt(100) } +private object B57 { val a = B56.a + Random.nextInt(100) } +private object B58 { val a = B57.a + Random.nextInt(100) } +private object B59 { val a = B58.a + Random.nextInt(100) } +private object B60 { val a = B59.a + Random.nextInt(100) } +private object B61 { val a = B60.a + Random.nextInt(100) } +private object B62 { val a = B61.a + Random.nextInt(100) } +private object B63 { val a = B62.a + Random.nextInt(100) } +private object B64 { val a = B63.a + Random.nextInt(100) } +private object B65 { val a = B64.a + Random.nextInt(100) } +private object B66 { val a = B65.a + Random.nextInt(100) } +private object B67 { val a = B66.a + Random.nextInt(100) } +private object B68 { val a = B67.a + Random.nextInt(100) } +private object B69 { val a = B68.a + Random.nextInt(100) } +private object B70 { val a = B69.a + Random.nextInt(100) } +private object B71 { val a = B70.a + Random.nextInt(100) } +private object B72 { val a = B71.a + Random.nextInt(100) } +private object B73 { val a = B72.a + Random.nextInt(100) } +private object B74 { val a = B73.a + Random.nextInt(100) } +private object B75 { val a = B74.a + Random.nextInt(100) } +private object B76 { val a = B75.a + Random.nextInt(100) } +private object B77 { val a = B76.a + Random.nextInt(100) } +private object B78 { val a = B77.a + Random.nextInt(100) } +private object B79 { val a = B78.a + Random.nextInt(100) } +private object B80 { val a = B79.a + Random.nextInt(100) } +private object B81 { val a = B80.a + Random.nextInt(100) } +private object B82 { val a = B81.a + Random.nextInt(100) } +private object B83 { val a = B82.a + Random.nextInt(100) } +private object B84 { val a = B83.a + Random.nextInt(100) } +private object B85 { val a = B84.a + Random.nextInt(100) } +private object B86 { val a = B85.a + Random.nextInt(100) } +private object B87 { val a = B86.a + Random.nextInt(100) } +private object B88 { val a = B87.a + Random.nextInt(100) } +private object B89 { val a = B88.a + Random.nextInt(100) } +private object B90 { val a = B89.a + Random.nextInt(100) } +private object B91 { val a = B90.a + Random.nextInt(100) } +private object B92 { val a = B91.a + Random.nextInt(100) } +private object B93 { val a = B92.a + Random.nextInt(100) } +private object B94 { val a = B93.a + Random.nextInt(100) } +private object B95 { val a = B94.a + Random.nextInt(100) } +private object B96 { val a = B95.a + Random.nextInt(100) } +private object B97 { val a = B96.a + Random.nextInt(100) } +private object B98 { val a = B97.a + Random.nextInt(100) } +private object B99 { val a = B98.a + Random.nextInt(100) } +private object B100 { val a = B99.a + Random.nextInt(100) } +private object B101 { val a = B100.a + Random.nextInt(100) } +private object B102 { val a = B101.a + Random.nextInt(100) } +private object B103 { val a = B102.a + Random.nextInt(100) } +private object B104 { val a = B103.a + Random.nextInt(100) } +private object B105 { val a = B104.a + Random.nextInt(100) } +private object B106 { val a = B105.a + Random.nextInt(100) } +private object B107 { val a = B106.a + Random.nextInt(100) } +private object B108 { val a = B107.a + Random.nextInt(100) } +private object B109 { val a = B108.a + Random.nextInt(100) } +private object B110 { val a = B109.a + Random.nextInt(100) } +private object B111 { val a = B110.a + Random.nextInt(100) } +private object B112 { val a = B111.a + Random.nextInt(100) } +private object B113 { val a = B112.a + Random.nextInt(100) } +private object B114 { val a = B113.a + Random.nextInt(100) } +private object B115 { val a = B114.a + Random.nextInt(100) } +private object B116 { val a = B115.a + Random.nextInt(100) } +private object B117 { val a = B116.a + Random.nextInt(100) } +private object B118 { val a = B117.a + Random.nextInt(100) } +private object B119 { val a = B118.a + Random.nextInt(100) } +private object B120 { val a = B119.a + Random.nextInt(100) } +private object B121 { val a = B120.a + Random.nextInt(100) } +private object B122 { val a = B121.a + Random.nextInt(100) } +private object B123 { val a = B122.a + Random.nextInt(100) } +private object B124 { val a = B123.a + Random.nextInt(100) } +private object B125 { val a = B124.a + Random.nextInt(100) } +private object B126 { val a = B125.a + Random.nextInt(100) } +private object B127 { val a = B126.a + Random.nextInt(100) } +private object B128 { val a = B127.a + Random.nextInt(100) } +private object B129 { val a = B128.a + Random.nextInt(100) } +private object B130 { val a = B129.a + Random.nextInt(100) } +private object B131 { val a = B130.a + Random.nextInt(100) } +private object B132 { val a = B131.a + Random.nextInt(100) } +private object B133 { val a = B132.a + Random.nextInt(100) } +private object B134 { val a = B133.a + Random.nextInt(100) } +private object B135 { val a = B134.a + Random.nextInt(100) } +private object B136 { val a = B135.a + Random.nextInt(100) } +private object B137 { val a = B136.a + Random.nextInt(100) } +private object B138 { val a = B137.a + Random.nextInt(100) } +private object B139 { val a = B138.a + Random.nextInt(100) } +private object B140 { val a = B139.a + Random.nextInt(100) } +private object B141 { val a = B140.a + Random.nextInt(100) } +private object B142 { val a = B141.a + Random.nextInt(100) } +private object B143 { val a = B142.a + Random.nextInt(100) } +private object B144 { val a = B143.a + Random.nextInt(100) } +private object B145 { val a = B144.a + Random.nextInt(100) } +private object B146 { val a = B145.a + Random.nextInt(100) } +private object B147 { val a = B146.a + Random.nextInt(100) } +private object B148 { val a = B147.a + Random.nextInt(100) } +private object B149 { val a = B148.a + Random.nextInt(100) } +private object B150 { val a = B149.a + Random.nextInt(100) } +private object B151 { val a = B150.a + Random.nextInt(100) } +private object B152 { val a = B151.a + Random.nextInt(100) } +private object B153 { val a = B152.a + Random.nextInt(100) } +private object B154 { val a = B153.a + Random.nextInt(100) } +private object B155 { val a = B154.a + Random.nextInt(100) } +private object B156 { val a = B155.a + Random.nextInt(100) } +private object B157 { val a = B156.a + Random.nextInt(100) } +private object B158 { val a = B157.a + Random.nextInt(100) } +private object B159 { val a = B158.a + Random.nextInt(100) } +private object B160 { val a = B159.a + Random.nextInt(100) } +private object B161 { val a = B160.a + Random.nextInt(100) } +private object B162 { val a = B161.a + Random.nextInt(100) } +private object B163 { val a = B162.a + Random.nextInt(100) } +private object B164 { val a = B163.a + Random.nextInt(100) } +private object B165 { val a = B164.a + Random.nextInt(100) } +private object B166 { val a = B165.a + Random.nextInt(100) } +private object B167 { val a = B166.a + Random.nextInt(100) } +private object B168 { val a = B167.a + Random.nextInt(100) } +private object B169 { val a = B168.a + Random.nextInt(100) } +private object B170 { val a = B169.a + Random.nextInt(100) } +private object B171 { val a = B170.a + Random.nextInt(100) } +private object B172 { val a = B171.a + Random.nextInt(100) } +private object B173 { val a = B172.a + Random.nextInt(100) } +private object B174 { val a = B173.a + Random.nextInt(100) } +private object B175 { val a = B174.a + Random.nextInt(100) } +private object B176 { val a = B175.a + Random.nextInt(100) } +private object B177 { val a = B176.a + Random.nextInt(100) } +private object B178 { val a = B177.a + Random.nextInt(100) } +private object B179 { val a = B178.a + Random.nextInt(100) } +private object B180 { val a = B179.a + Random.nextInt(100) } +private object B181 { val a = B180.a + Random.nextInt(100) } +private object B182 { val a = B181.a + Random.nextInt(100) } +private object B183 { val a = B182.a + Random.nextInt(100) } +private object B184 { val a = B183.a + Random.nextInt(100) } +private object B185 { val a = B184.a + Random.nextInt(100) } +private object B186 { val a = B185.a + Random.nextInt(100) } +private object B187 { val a = B186.a + Random.nextInt(100) } +private object B188 { val a = B187.a + Random.nextInt(100) } +private object B189 { val a = B188.a + Random.nextInt(100) } +private object B190 { val a = B189.a + Random.nextInt(100) } +private object B191 { val a = B190.a + Random.nextInt(100) } +private object B192 { val a = B191.a + Random.nextInt(100) } +private object B193 { val a = B192.a + Random.nextInt(100) } +private object B194 { val a = B193.a + Random.nextInt(100) } +private object B195 { val a = B194.a + Random.nextInt(100) } +private object B196 { val a = B195.a + Random.nextInt(100) } +private object B197 { val a = B196.a + Random.nextInt(100) } +private object B198 { val a = B197.a + Random.nextInt(100) } +private object B199 { val a = B198.a + Random.nextInt(100) } +private object B200 { val a = B199.a + Random.nextInt(100) } +private object B201 { val a = B200.a + Random.nextInt(100) } +private object B202 { val a = B201.a + Random.nextInt(100) } +private object B203 { val a = B202.a + Random.nextInt(100) } +private object B204 { val a = B203.a + Random.nextInt(100) } +private object B205 { val a = B204.a + Random.nextInt(100) } +private object B206 { val a = B205.a + Random.nextInt(100) } +private object B207 { val a = B206.a + Random.nextInt(100) } +private object B208 { val a = B207.a + Random.nextInt(100) } +private object B209 { val a = B208.a + Random.nextInt(100) } +private object B210 { val a = B209.a + Random.nextInt(100) } +private object B211 { val a = B210.a + Random.nextInt(100) } +private object B212 { val a = B211.a + Random.nextInt(100) } +private object B213 { val a = B212.a + Random.nextInt(100) } +private object B214 { val a = B213.a + Random.nextInt(100) } +private object B215 { val a = B214.a + Random.nextInt(100) } +private object B216 { val a = B215.a + Random.nextInt(100) } +private object B217 { val a = B216.a + Random.nextInt(100) } +private object B218 { val a = B217.a + Random.nextInt(100) } +private object B219 { val a = B218.a + Random.nextInt(100) } +private object B220 { val a = B219.a + Random.nextInt(100) } +private object B221 { val a = B220.a + Random.nextInt(100) } +private object B222 { val a = B221.a + Random.nextInt(100) } +private object B223 { val a = B222.a + Random.nextInt(100) } +private object B224 { val a = B223.a + Random.nextInt(100) } +private object B225 { val a = B224.a + Random.nextInt(100) } +private object B226 { val a = B225.a + Random.nextInt(100) } +private object B227 { val a = B226.a + Random.nextInt(100) } +private object B228 { val a = B227.a + Random.nextInt(100) } +private object B229 { val a = B228.a + Random.nextInt(100) } +private object B230 { val a = B229.a + Random.nextInt(100) } +private object B231 { val a = B230.a + Random.nextInt(100) } +private object B232 { val a = B231.a + Random.nextInt(100) } +private object B233 { val a = B232.a + Random.nextInt(100) } +private object B234 { val a = B233.a + Random.nextInt(100) } +private object B235 { val a = B234.a + Random.nextInt(100) } +private object B236 { val a = B235.a + Random.nextInt(100) } +private object B237 { val a = B236.a + Random.nextInt(100) } +private object B238 { val a = B237.a + Random.nextInt(100) } +private object B239 { val a = B238.a + Random.nextInt(100) } +private object B240 { val a = B239.a + Random.nextInt(100) } +private object B241 { val a = B240.a + Random.nextInt(100) } +private object B242 { val a = B241.a + Random.nextInt(100) } +private object B243 { val a = B242.a + Random.nextInt(100) } +private object B244 { val a = B243.a + Random.nextInt(100) } +private object B245 { val a = B244.a + Random.nextInt(100) } +private object B246 { val a = B245.a + Random.nextInt(100) } +private object B247 { val a = B246.a + Random.nextInt(100) } +private object B248 { val a = B247.a + Random.nextInt(100) } +private object B249 { val a = B248.a + Random.nextInt(100) } +private object B250 { val a = B249.a + Random.nextInt(100) } +private object B251 { val a = B250.a + Random.nextInt(100) } +private object B252 { val a = B251.a + Random.nextInt(100) } +private object B253 { val a = B252.a + Random.nextInt(100) } +private object B254 { val a = B253.a + Random.nextInt(100) } +private object B255 { val a = B254.a + Random.nextInt(100) } +private object B256 { val a = B255.a + Random.nextInt(100) } +private object B257 { val a = B256.a + Random.nextInt(100) } +private object B258 { val a = B257.a + Random.nextInt(100) } +private object B259 { val a = B258.a + Random.nextInt(100) } +private object B260 { val a = B259.a + Random.nextInt(100) } +private object B261 { val a = B260.a + Random.nextInt(100) } +private object B262 { val a = B261.a + Random.nextInt(100) } +private object B263 { val a = B262.a + Random.nextInt(100) } +private object B264 { val a = B263.a + Random.nextInt(100) } +private object B265 { val a = B264.a + Random.nextInt(100) } +private object B266 { val a = B265.a + Random.nextInt(100) } +private object B267 { val a = B266.a + Random.nextInt(100) } +private object B268 { val a = B267.a + Random.nextInt(100) } +private object B269 { val a = B268.a + Random.nextInt(100) } +private object B270 { val a = B269.a + Random.nextInt(100) } +private object B271 { val a = B270.a + Random.nextInt(100) } +private object B272 { val a = B271.a + Random.nextInt(100) } +private object B273 { val a = B272.a + Random.nextInt(100) } +private object B274 { val a = B273.a + Random.nextInt(100) } +private object B275 { val a = B274.a + Random.nextInt(100) } +private object B276 { val a = B275.a + Random.nextInt(100) } +private object B277 { val a = B276.a + Random.nextInt(100) } +private object B278 { val a = B277.a + Random.nextInt(100) } +private object B279 { val a = B278.a + Random.nextInt(100) } +private object B280 { val a = B279.a + Random.nextInt(100) } +private object B281 { val a = B280.a + Random.nextInt(100) } +private object B282 { val a = B281.a + Random.nextInt(100) } +private object B283 { val a = B282.a + Random.nextInt(100) } +private object B284 { val a = B283.a + Random.nextInt(100) } +private object B285 { val a = B284.a + Random.nextInt(100) } +private object B286 { val a = B285.a + Random.nextInt(100) } +private object B287 { val a = B286.a + Random.nextInt(100) } +private object B288 { val a = B287.a + Random.nextInt(100) } +private object B289 { val a = B288.a + Random.nextInt(100) } +private object B290 { val a = B289.a + Random.nextInt(100) } +private object B291 { val a = B290.a + Random.nextInt(100) } +private object B292 { val a = B291.a + Random.nextInt(100) } +private object B293 { val a = B292.a + Random.nextInt(100) } +private object B294 { val a = B293.a + Random.nextInt(100) } +private object B295 { val a = B294.a + Random.nextInt(100) } +private object B296 { val a = B295.a + Random.nextInt(100) } +private object B297 { val a = B296.a + Random.nextInt(100) } +private object B298 { val a = B297.a + Random.nextInt(100) } +private object B299 { val a = B298.a + Random.nextInt(100) } +private object B300 { val a = B299.a + Random.nextInt(100) } +private object B301 { val a = B300.a + Random.nextInt(100) } +private object B302 { val a = B301.a + Random.nextInt(100) } +private object B303 { val a = B302.a + Random.nextInt(100) } +private object B304 { val a = B303.a + Random.nextInt(100) } +private object B305 { val a = B304.a + Random.nextInt(100) } +private object B306 { val a = B305.a + Random.nextInt(100) } +private object B307 { val a = B306.a + Random.nextInt(100) } +private object B308 { val a = B307.a + Random.nextInt(100) } +private object B309 { val a = B308.a + Random.nextInt(100) } +private object B310 { val a = B309.a + Random.nextInt(100) } +private object B311 { val a = B310.a + Random.nextInt(100) } +private object B312 { val a = B311.a + Random.nextInt(100) } +private object B313 { val a = B312.a + Random.nextInt(100) } +private object B314 { val a = B313.a + Random.nextInt(100) } +private object B315 { val a = B314.a + Random.nextInt(100) } +private object B316 { val a = B315.a + Random.nextInt(100) } +private object B317 { val a = B316.a + Random.nextInt(100) } +private object B318 { val a = B317.a + Random.nextInt(100) } +private object B319 { val a = B318.a + Random.nextInt(100) } +private object B320 { val a = B319.a + Random.nextInt(100) } +private object B321 { val a = B320.a + Random.nextInt(100) } +private object B322 { val a = B321.a + Random.nextInt(100) } +private object B323 { val a = B322.a + Random.nextInt(100) } +private object B324 { val a = B323.a + Random.nextInt(100) } +private object B325 { val a = B324.a + Random.nextInt(100) } +private object B326 { val a = B325.a + Random.nextInt(100) } +private object B327 { val a = B326.a + Random.nextInt(100) } +private object B328 { val a = B327.a + Random.nextInt(100) } +private object B329 { val a = B328.a + Random.nextInt(100) } +private object B330 { val a = B329.a + Random.nextInt(100) } +private object B331 { val a = B330.a + Random.nextInt(100) } +private object B332 { val a = B331.a + Random.nextInt(100) } +private object B333 { val a = B332.a + Random.nextInt(100) } +private object B334 { val a = B333.a + Random.nextInt(100) } +private object B335 { val a = B334.a + Random.nextInt(100) } +private object B336 { val a = B335.a + Random.nextInt(100) } +private object B337 { val a = B336.a + Random.nextInt(100) } +private object B338 { val a = B337.a + Random.nextInt(100) } +private object B339 { val a = B338.a + Random.nextInt(100) } +private object B340 { val a = B339.a + Random.nextInt(100) } +private object B341 { val a = B340.a + Random.nextInt(100) } +private object B342 { val a = B341.a + Random.nextInt(100) } +private object B343 { val a = B342.a + Random.nextInt(100) } +private object B344 { val a = B343.a + Random.nextInt(100) } +private object B345 { val a = B344.a + Random.nextInt(100) } +private object B346 { val a = B345.a + Random.nextInt(100) } +private object B347 { val a = B346.a + Random.nextInt(100) } +private object B348 { val a = B347.a + Random.nextInt(100) } +private object B349 { val a = B348.a + Random.nextInt(100) } +private object B350 { val a = B349.a + Random.nextInt(100) } +private object B351 { val a = B350.a + Random.nextInt(100) } +private object B352 { val a = B351.a + Random.nextInt(100) } +private object B353 { val a = B352.a + Random.nextInt(100) } +private object B354 { val a = B353.a + Random.nextInt(100) } +private object B355 { val a = B354.a + Random.nextInt(100) } +private object B356 { val a = B355.a + Random.nextInt(100) } +private object B357 { val a = B356.a + Random.nextInt(100) } +private object B358 { val a = B357.a + Random.nextInt(100) } +private object B359 { val a = B358.a + Random.nextInt(100) } +private object B360 { val a = B359.a + Random.nextInt(100) } +private object B361 { val a = B360.a + Random.nextInt(100) } +private object B362 { val a = B361.a + Random.nextInt(100) } +private object B363 { val a = B362.a + Random.nextInt(100) } +private object B364 { val a = B363.a + Random.nextInt(100) } +private object B365 { val a = B364.a + Random.nextInt(100) } +private object B366 { val a = B365.a + Random.nextInt(100) } +private object B367 { val a = B366.a + Random.nextInt(100) } +private object B368 { val a = B367.a + Random.nextInt(100) } +private object B369 { val a = B368.a + Random.nextInt(100) } +private object B370 { val a = B369.a + Random.nextInt(100) } +private object B371 { val a = B370.a + Random.nextInt(100) } +private object B372 { val a = B371.a + Random.nextInt(100) } +private object B373 { val a = B372.a + Random.nextInt(100) } +private object B374 { val a = B373.a + Random.nextInt(100) } +private object B375 { val a = B374.a + Random.nextInt(100) } +private object B376 { val a = B375.a + Random.nextInt(100) } +private object B377 { val a = B376.a + Random.nextInt(100) } +private object B378 { val a = B377.a + Random.nextInt(100) } +private object B379 { val a = B378.a + Random.nextInt(100) } +private object B380 { val a = B379.a + Random.nextInt(100) } +private object B381 { val a = B380.a + Random.nextInt(100) } +private object B382 { val a = B381.a + Random.nextInt(100) } +private object B383 { val a = B382.a + Random.nextInt(100) } +private object B384 { val a = B383.a + Random.nextInt(100) } +private object B385 { val a = B384.a + Random.nextInt(100) } +private object B386 { val a = B385.a + Random.nextInt(100) } +private object B387 { val a = B386.a + Random.nextInt(100) } +private object B388 { val a = B387.a + Random.nextInt(100) } +private object B389 { val a = B388.a + Random.nextInt(100) } +private object B390 { val a = B389.a + Random.nextInt(100) } +private object B391 { val a = B390.a + Random.nextInt(100) } +private object B392 { val a = B391.a + Random.nextInt(100) } +private object B393 { val a = B392.a + Random.nextInt(100) } +private object B394 { val a = B393.a + Random.nextInt(100) } +private object B395 { val a = B394.a + Random.nextInt(100) } +private object B396 { val a = B395.a + Random.nextInt(100) } +private object B397 { val a = B396.a + Random.nextInt(100) } +private object B398 { val a = B397.a + Random.nextInt(100) } +private object B399 { val a = B398.a + Random.nextInt(100) } +private object B400 { val a = B399.a + Random.nextInt(100) } +private object B401 { val a = B400.a + Random.nextInt(100) } +private object B402 { val a = B401.a + Random.nextInt(100) } +private object B403 { val a = B402.a + Random.nextInt(100) } +private object B404 { val a = B403.a + Random.nextInt(100) } +private object B405 { val a = B404.a + Random.nextInt(100) } +private object B406 { val a = B405.a + Random.nextInt(100) } +private object B407 { val a = B406.a + Random.nextInt(100) } +private object B408 { val a = B407.a + Random.nextInt(100) } +private object B409 { val a = B408.a + Random.nextInt(100) } +private object B410 { val a = B409.a + Random.nextInt(100) } +private object B411 { val a = B410.a + Random.nextInt(100) } +private object B412 { val a = B411.a + Random.nextInt(100) } +private object B413 { val a = B412.a + Random.nextInt(100) } +private object B414 { val a = B413.a + Random.nextInt(100) } +private object B415 { val a = B414.a + Random.nextInt(100) } +private object B416 { val a = B415.a + Random.nextInt(100) } +private object B417 { val a = B416.a + Random.nextInt(100) } +private object B418 { val a = B417.a + Random.nextInt(100) } +private object B419 { val a = B418.a + Random.nextInt(100) } +private object B420 { val a = B419.a + Random.nextInt(100) } +private object B421 { val a = B420.a + Random.nextInt(100) } +private object B422 { val a = B421.a + Random.nextInt(100) } +private object B423 { val a = B422.a + Random.nextInt(100) } +private object B424 { val a = B423.a + Random.nextInt(100) } +private object B425 { val a = B424.a + Random.nextInt(100) } +private object B426 { val a = B425.a + Random.nextInt(100) } +private object B427 { val a = B426.a + Random.nextInt(100) } +private object B428 { val a = B427.a + Random.nextInt(100) } +private object B429 { val a = B428.a + Random.nextInt(100) } +private object B430 { val a = B429.a + Random.nextInt(100) } +private object B431 { val a = B430.a + Random.nextInt(100) } +private object B432 { val a = B431.a + Random.nextInt(100) } +private object B433 { val a = B432.a + Random.nextInt(100) } +private object B434 { val a = B433.a + Random.nextInt(100) } +private object B435 { val a = B434.a + Random.nextInt(100) } +private object B436 { val a = B435.a + Random.nextInt(100) } +private object B437 { val a = B436.a + Random.nextInt(100) } +private object B438 { val a = B437.a + Random.nextInt(100) } +private object B439 { val a = B438.a + Random.nextInt(100) } +private object B440 { val a = B439.a + Random.nextInt(100) } +private object B441 { val a = B440.a + Random.nextInt(100) } +private object B442 { val a = B441.a + Random.nextInt(100) } +private object B443 { val a = B442.a + Random.nextInt(100) } +private object B444 { val a = B443.a + Random.nextInt(100) } +private object B445 { val a = B444.a + Random.nextInt(100) } +private object B446 { val a = B445.a + Random.nextInt(100) } +private object B447 { val a = B446.a + Random.nextInt(100) } +private object B448 { val a = B447.a + Random.nextInt(100) } +private object B449 { val a = B448.a + Random.nextInt(100) } +private object B450 { val a = B449.a + Random.nextInt(100) } +private object B451 { val a = B450.a + Random.nextInt(100) } +private object B452 { val a = B451.a + Random.nextInt(100) } +private object B453 { val a = B452.a + Random.nextInt(100) } +private object B454 { val a = B453.a + Random.nextInt(100) } +private object B455 { val a = B454.a + Random.nextInt(100) } +private object B456 { val a = B455.a + Random.nextInt(100) } +private object B457 { val a = B456.a + Random.nextInt(100) } +private object B458 { val a = B457.a + Random.nextInt(100) } +private object B459 { val a = B458.a + Random.nextInt(100) } +private object B460 { val a = B459.a + Random.nextInt(100) } +private object B461 { val a = B460.a + Random.nextInt(100) } +private object B462 { val a = B461.a + Random.nextInt(100) } +private object B463 { val a = B462.a + Random.nextInt(100) } +private object B464 { val a = B463.a + Random.nextInt(100) } +private object B465 { val a = B464.a + Random.nextInt(100) } +private object B466 { val a = B465.a + Random.nextInt(100) } +private object B467 { val a = B466.a + Random.nextInt(100) } +private object B468 { val a = B467.a + Random.nextInt(100) } +private object B469 { val a = B468.a + Random.nextInt(100) } +private object B470 { val a = B469.a + Random.nextInt(100) } +private object B471 { val a = B470.a + Random.nextInt(100) } +private object B472 { val a = B471.a + Random.nextInt(100) } +private object B473 { val a = B472.a + Random.nextInt(100) } +private object B474 { val a = B473.a + Random.nextInt(100) } +private object B475 { val a = B474.a + Random.nextInt(100) } +private object B476 { val a = B475.a + Random.nextInt(100) } +private object B477 { val a = B476.a + Random.nextInt(100) } +private object B478 { val a = B477.a + Random.nextInt(100) } +private object B479 { val a = B478.a + Random.nextInt(100) } +private object B480 { val a = B479.a + Random.nextInt(100) } +private object B481 { val a = B480.a + Random.nextInt(100) } +private object B482 { val a = B481.a + Random.nextInt(100) } +private object B483 { val a = B482.a + Random.nextInt(100) } +private object B484 { val a = B483.a + Random.nextInt(100) } +private object B485 { val a = B484.a + Random.nextInt(100) } +private object B486 { val a = B485.a + Random.nextInt(100) } +private object B487 { val a = B486.a + Random.nextInt(100) } +private object B488 { val a = B487.a + Random.nextInt(100) } +private object B489 { val a = B488.a + Random.nextInt(100) } +private object B490 { val a = B489.a + Random.nextInt(100) } +private object B491 { val a = B490.a + Random.nextInt(100) } +private object B492 { val a = B491.a + Random.nextInt(100) } +private object B493 { val a = B492.a + Random.nextInt(100) } +private object B494 { val a = B493.a + Random.nextInt(100) } +private object B495 { val a = B494.a + Random.nextInt(100) } +private object B496 { val a = B495.a + Random.nextInt(100) } +private object B497 { val a = B496.a + Random.nextInt(100) } +private object B498 { val a = B497.a + Random.nextInt(100) } +private object B499 { val a = B498.a + Random.nextInt(100) } + +private var singletonInitializeNestedRun = false +// Benchmark +fun singletonInitializeNested(): BenchmarkManualResult { + if (singletonInitializeNestedRun) { + return BenchmarkManualResult(BenchmarkResult.Status.FAILED, 0, 0, listOf(0.0)) + } + singletonInitializeNestedRun = true + + var total = 0 + val time = measureNanoTime { + total = B499.a + }.toDouble() / 500 + + return BenchmarkManualResult(BenchmarkResult.Status.PASSED, total, 0, listOf(time)) +} diff --git a/performance/startup/src/main/kotlin/org/jetbrains/startup/Utils.kt b/performance/startup/src/main/kotlin/org/jetbrains/startup/Utils.kt new file mode 100644 index 00000000000..3569bea49b7 --- /dev/null +++ b/performance/startup/src/main/kotlin/org/jetbrains/startup/Utils.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ + +package org.jetbrains.startup + +expect class Random() { + companion object { + var seedInt: Int + fun nextInt(boundary: Int = 100): Int + } +} diff --git a/settings.gradle b/settings.gradle index fbc93233297..0e40883bb76 100644 --- a/settings.gradle +++ b/settings.gradle @@ -39,6 +39,7 @@ include ':performance:helloworld' include ':performance:numerical' include ':performance:videoplayer' include ':performance:framework' +include ':performance:startup' if (System.getProperty("os.name") == "Mac OS X") { include ':performance:objcinterop' include ':performance:swiftinterop'