diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/AbstractModularizedTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/AbstractModularizedTest.kt index 7259b7d3957..a0578364101 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/AbstractModularizedTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/AbstractModularizedTest.kt @@ -11,6 +11,8 @@ import org.jetbrains.kotlin.types.AbstractTypeChecker import org.w3c.dom.Node import org.w3c.dom.NodeList import java.io.File +import java.text.SimpleDateFormat +import java.util.* import javax.xml.parsers.DocumentBuilderFactory data class ModuleData( @@ -37,9 +39,23 @@ private fun NodeList.toList(): List { private val Node.childNodesList get() = childNodes.toList() abstract class AbstractModularizedTest : KtUsefulTestCase() { + private val folderDateFormat = SimpleDateFormat("yyyy-MM-dd") + private lateinit var startDate: Date + + protected fun reportDir() = File(FIR_LOGS_PATH, folderDateFormat.format(startDate)) + .also { + it.mkdirs() + } + + protected val reportDateStr by lazy { + val reportDateFormat = SimpleDateFormat("yyyy-MM-dd__HH-mm") + reportDateFormat.format(startDate) + } + override fun setUp() { super.setUp() AbstractTypeChecker.RUN_SLOW_ASSERTIONS = false + startDate = Date() } override fun tearDown() { diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt index 5340e1b4327..818a7550aea 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/FirResolveModularizedTotalKotlinTest.kt @@ -26,15 +26,13 @@ import org.jetbrains.kotlin.test.TestJdkKind import java.io.File import java.io.FileOutputStream import java.io.PrintStream -import java.text.SimpleDateFormat -import java.util.* private const val FAIL_FAST = true private const val FIR_DUMP_PATH = "tmp/firDump" private const val FIR_HTML_DUMP_PATH = "tmp/firDump-html" -private const val FIR_LOGS_PATH = "tmp/fir-logs" +const val FIR_LOGS_PATH = "tmp/fir-logs" private val DUMP_FIR = System.getProperty("fir.bench.dump", "true") == "true" internal val PASSES = System.getProperty("fir.bench.passes")?.toInt() ?: 3 @@ -151,24 +149,6 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() { printErrors(bestStatistics) } - private val folderDateFormat = SimpleDateFormat("yyyy-MM-dd") - private lateinit var startDate: Date - - override fun setUp() { - startDate = Date() - super.setUp() - } - - private fun reportDir() = File(FIR_LOGS_PATH, folderDateFormat.format(startDate)) - .also { - it.mkdirs() - } - - private val reportDateStr by lazy { - val reportDateFormat = SimpleDateFormat("yyyy-MM-dd__HH-mm") - reportDateFormat.format(startDate) - } - private fun saveReport(pass: Int, statistics: FirResolveBench.TotalStatistics) { if (DUMP_FIR) dump.finish() printStatistics(statistics, "PASS $pass") diff --git a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt index 7f09851e6c2..f375b1ed6d5 100644 --- a/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt +++ b/compiler/fir/modularized-tests/tests/org/jetbrains/kotlin/fir/NonFirResolveModularizedTotalKotlinTest.kt @@ -20,15 +20,17 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestJdkKind +import java.io.FileOutputStream +import java.io.PrintStream import kotlin.system.measureNanoTime class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() { - - private var totalTime = 0L private var files = 0 + private val times = mutableListOf() + private fun runAnalysis(moduleData: ModuleData, environment: KotlinCoreEnvironment) { val project = environment.project @@ -39,7 +41,12 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() { files += environment.getSourceFiles().size totalTime += time println("Time is ${time * 1e-6} ms") + } + private fun dumpTime(message: String, time: Long) { + PrintStream(FileOutputStream(reportDir().resolve("report-$reportDateStr.log"), true)).use { stream -> + stream.println("$message: ${time * 1e-6} ms") + } } override fun processModule(moduleData: ModuleData): ProcessorAction { @@ -104,8 +111,13 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() { fun testTotalKotlin() { for (i in 0 until PASSES) { runTestOnce(i) - println("Total time is ${totalTime * 1e-6} ms") + times += totalTime + dumpTime("Pass $i:", totalTime) totalTime = 0L } + + val bestTime = times.min()!! + val bestPass = times.indexOf(bestTime) + dumpTime("Best pass: $bestPass", bestTime) } } \ No newline at end of file