Make use of contracts of time measurement functions

This commit is contained in:
Ilya Gorbunov
2020-01-21 07:06:52 +03:00
parent d71410bfb5
commit fcada0a5e3
4 changed files with 13 additions and 13 deletions
@@ -56,13 +56,13 @@ class RawFirBuilderTotalKotlinTestCase : AbstractRawFirBuilderTestCase() {
if (file.extension != "kt") continue if (file.extension != "kt") continue
try { try {
val ktFile = createKtFile(file.toRelativeString(root)) val ktFile = createKtFile(file.toRelativeString(root))
var firFile: FirFile? = null val firFile: FirFile
time += measureNanoTime { time += measureNanoTime {
firFile = ktFile.toFirFile(stubMode) firFile = ktFile.toFirFile(stubMode)
} }
totalLength += StringBuilder().also { FirRenderer(it).visitFile(firFile!!) }.length totalLength += StringBuilder().also { FirRenderer(it).visitFile(firFile) }.length
counter++ counter++
firFile?.accept(object : FirVisitorVoid() { firFile.accept(object : FirVisitorVoid() {
override fun visitElement(element: FirElement) { override fun visitElement(element: FirElement) {
element.acceptChildren(this) element.acceptChildren(this)
} }
@@ -99,15 +99,15 @@ class FirResolveBench(val withProgress: Boolean) {
): List<FirFile> { ): List<FirFile> {
return ktFiles.map { file -> return ktFiles.map { file ->
val before = vmStateSnapshot() val before = vmStateSnapshot()
var firFile: FirFile? = null val firFile: FirFile
val time = measureNanoTime { val time = measureNanoTime {
firFile = builder.buildFirFile(file) firFile = builder.buildFirFile(file)
(builder.baseSession.firProvider as FirProviderImpl).recordFile(firFile!!) (builder.baseSession.firProvider as FirProviderImpl).recordFile(firFile)
} }
val after = vmStateSnapshot() val after = vmStateSnapshot()
val diff = after - before val diff = after - before
recordTime(builder::class, diff, time) recordTime(builder::class, diff, time)
firFile!! firFile
}.also { }.also {
totalTime = timePerTransformer.values.sumByLong { it.time } totalTime = timePerTransformer.values.sumByLong { it.time }
} }
@@ -119,15 +119,15 @@ class FirResolveBench(val withProgress: Boolean) {
): List<FirFile> { ): List<FirFile> {
return files.map { file -> return files.map { file ->
val before = vmStateSnapshot() val before = vmStateSnapshot()
var firFile: FirFile? = null val firFile: FirFile
val time = measureNanoTime { val time = measureNanoTime {
firFile = builder.buildFirFile(file) firFile = builder.buildFirFile(file)
(builder.session.firProvider as FirProviderImpl).recordFile(firFile!!) (builder.session.firProvider as FirProviderImpl).recordFile(firFile)
} }
val after = vmStateSnapshot() val after = vmStateSnapshot()
val diff = after - before val diff = after - before
recordTime(builder::class, diff, time) recordTime(builder::class, diff, time)
firFile!! firFile
}.also { }.also {
totalTime = timePerTransformer.values.sumByLong { it.time } totalTime = timePerTransformer.values.sumByLong { it.time }
} }
@@ -10,12 +10,12 @@ import org.jetbrains.kotlin.konan.file.*
import java.lang.StringBuilder import java.lang.StringBuilder
fun <T> printMillisec(message: String, body: () -> T): T { fun <T> printMillisec(message: String, body: () -> T): T {
var result: T? = null val result: T
val msec = measureTimeMillis{ val msec = measureTimeMillis {
result = body() result = body()
} }
println("$message: $msec msec") println("$message: $msec msec")
return result!! return result
} }
fun profile(message: String, body: () -> Unit) = profileIf( fun profile(message: String, body: () -> Unit) = profileIf(
@@ -128,7 +128,7 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
} }
private fun initializeKotlinContext(context: CompileContext): KotlinCompileContext { private fun initializeKotlinContext(context: CompileContext): KotlinCompileContext {
lateinit var kotlinContext: KotlinCompileContext val kotlinContext: KotlinCompileContext
val time = measureTimeMillis { val time = measureTimeMillis {
kotlinContext = KotlinCompileContext(context) kotlinContext = KotlinCompileContext(context)