Enhance progress logging in FIR total resolve tests
This commit is contained in:
@@ -68,7 +68,7 @@ class FirResolveTestTotalKotlin : AbstractFirResolveWithSessionTestCase() {
|
||||
val builder = RawFirBuilder(session, stubMode = true)
|
||||
|
||||
val totalTransformer = FirTotalResolveTransformer()
|
||||
val firFiles = ktFiles.map {
|
||||
val firFiles = ktFiles.toList().progress("Loading FIR").map {
|
||||
val firFile = builder.buildFirFile(it)
|
||||
(session.service<FirProvider>() as FirProviderImpl).recordFile(firFile)
|
||||
firFile
|
||||
|
||||
@@ -32,8 +32,9 @@ fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransfo
|
||||
|
||||
|
||||
try {
|
||||
for (transformer in transformers) {
|
||||
for (firFile in firFiles) {
|
||||
for ((stage, transformer) in transformers.withIndex()) {
|
||||
println("Starting stage #$stage. $transformer")
|
||||
for (firFile in firFiles.progress(" ~ ")) {
|
||||
val time = measureNanoTime {
|
||||
try {
|
||||
transformer.transformFile(firFile, null)
|
||||
@@ -116,4 +117,15 @@ fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransfo
|
||||
println("${transformer.simpleName}, TIME: ${time * 1e-6} ms, TIME PER FILE: ${(time / counter) * 1e-6} ms, FILES: $counter")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> Collection<T>.progress(label: String, step: Double = 0.1): Sequence<T> {
|
||||
val intStep = (this.size * step).toInt()
|
||||
var progress = 0
|
||||
return asSequence().onEach {
|
||||
if (progress % intStep == 0) {
|
||||
println("$label: ${progress * 100 / size}% ($progress/${this.size})")
|
||||
}
|
||||
progress++
|
||||
}
|
||||
}
|
||||
|
||||
+1
-13
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.doFirResolveTestBench
|
||||
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
|
||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||
import org.jetbrains.kotlin.fir.progress
|
||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||
@@ -33,7 +34,6 @@ import org.jetbrains.kotlin.idea.caches.project.*
|
||||
import org.jetbrains.kotlin.idea.fir.IdeFirDependenciesSymbolProvider
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import java.io.File
|
||||
import kotlin.math.ceil
|
||||
|
||||
class FirTotalKotlinResolveInIdeTest : ModuleTestCase() {
|
||||
private val projectRootFile = File(".")
|
||||
@@ -57,18 +57,6 @@ class FirTotalKotlinResolveInIdeTest : ModuleTestCase() {
|
||||
)
|
||||
}
|
||||
|
||||
private fun <T> Collection<T>.progress(label: String, step: Double = 0.1): Sequence<T> {
|
||||
val intStep = (this.size * step).toInt()
|
||||
val percentStep = ceil(this.size * 0.01).toInt()
|
||||
var progress = 0
|
||||
return asSequence().onEach {
|
||||
if (progress % intStep == 0) {
|
||||
println("$label: ${progress / percentStep}% ($progress/${this.size})")
|
||||
}
|
||||
progress++
|
||||
}
|
||||
}
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
sessionProvider = FirProjectSessionProvider(project)
|
||||
|
||||
Reference in New Issue
Block a user