Compare commits

...

4 Commits

Author SHA1 Message Date
Dmitriy Dolovov
f6d88aa2ce TEMP: Run K/N IDE perf test on 1.4-SNAPSHOT (don't merge to master) 2020-03-24 13:38:54 +07:00
Dmitriy Dolovov
1c164ddaa4 TEMP: Commonizer debugging facilities (don't merge to master) 2020-03-24 13:38:53 +07:00
Dmitriy Dolovov
75bb9e86d3 TEMP: Increase heap size for IDE (don't merge to master) 2020-03-24 13:38:53 +07:00
Dmitriy Dolovov
b3cc01ff44 IDE perf tests for K/N: re-enable PerformanceNativeProjectsTest 2020-03-24 13:38:53 +07:00
7 changed files with 134 additions and 5 deletions

View File

@@ -170,7 +170,7 @@ fun Project.runIdeTask(name: String, ideaPluginDir: File, ideaSandboxDir: File,
workingDir = File(intellijRootDir(), "bin")
jvmArgs(
"-Xmx1250m",
"-Xmx3G",
"-XX:ReservedCodeCacheSize=240m",
"-XX:+HeapDumpOnOutOfMemoryError",
"-ea",

View File

@@ -32,10 +32,8 @@ import org.jetbrains.kotlin.idea.testFramework.suggestOsNeutralFileName
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
import org.jetbrains.kotlin.library.KOTLIN_STDLIB_NAME
import org.jetbrains.kotlin.platform.konan.isNative
import org.junit.Ignore
import java.io.File
@Ignore(value = "[VD] disabled temporary for further investigation: it fails on TC agents")
class PerformanceNativeProjectsTest : AbstractPerformanceProjectsTest() {
companion object {

View File

@@ -1,5 +1,6 @@
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven("https://dl.bintray.com/kotlin/kotlin-dev")
maven("https://dl.bintray.com/kotlin/kotlin-eap")
@@ -16,6 +17,7 @@ plugins {
}
repositories {
mavenLocal()
mavenCentral()
maven("https://dl.bintray.com/kotlin/kotlin-dev")
maven("https://dl.bintray.com/kotlin/kotlin-eap")

View File

@@ -1,4 +1,4 @@
kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.native.enableDependencyPropagation=false
kotlin_version=1.4.0-dev-3273
kotlin_version=1.4-SNAPSHOT

View File

@@ -1,4 +1,4 @@
kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.native.enableDependencyPropagation=true
kotlin_version=1.4.0-dev-3273
kotlin_version=1.4-SNAPSHOT

View File

@@ -9,6 +9,7 @@ pluginManagement {
}
repositories {
mavenLocal()
gradlePluginPortal()
maven("https://dl.bintray.com/kotlin/kotlin-dev")
maven("https://dl.bintray.com/kotlin/kotlin-eap")

View File

@@ -11,24 +11,152 @@ import org.jetbrains.kotlin.descriptors.commonizer.builder.DeclarationsBuilderVi
import org.jetbrains.kotlin.descriptors.commonizer.builder.createGlobalBuilderComponents
import org.jetbrains.kotlin.descriptors.commonizer.core.CommonizationVisitor
import org.jetbrains.kotlin.descriptors.commonizer.mergedtree.mergeRoots
import org.jetbrains.kotlin.descriptors.commonizer.utils.ResettableClockMark
import org.jetbrains.kotlin.storage.LockBasedStorageManager
fun runCommonization(parameters: Parameters): Result {
if (!parameters.hasAnythingToCommonize())
return NothingToCommonize
println(
"""
= Before building merged tree
Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
""".trimIndent()
)
val storageManager = LockBasedStorageManager("Declaration descriptors commonization")
val clock = ResettableClockMark()
// build merged tree:
val mergedTree = mergeRoots(storageManager, parameters.targetProviders)
println(
"""
= Built merged tree in ${clock.elapsedSinceLast()}
Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
""".trimIndent()
)
// println(
// """
// = Interner stats:
// stringInterner = ${stringInterner.internmentRatio}
// fqNameInterner = ${fqNameInterner.internmentRatio}
// nameInterner = ${nameInterner.internmentRatio}
// CirSimpleType.interner = ${CirSimpleType.interner.internmentRatio}
// CirAnnotation.interner = ${CirAnnotation.interner.internmentRatio}
// CirGetter.interner = ${CirGetter.interner.internmentRatio}
// CirSetter.interner = ${CirSetter.interner.internmentRatio}
// CirValueParameterImpl.interner = ${CirValueParameterImpl.interner.internmentRatio}
// """.trimIndent()
// )
for (i in 1..10) {
System.gc()
}
// println("NOW!!!")
// Thread.sleep(30_000)
println(
"""
= GC in ${clock.elapsedSinceLast()}
Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
""".trimIndent()
)
// commonize:
mergedTree.accept(CommonizationVisitor(mergedTree), Unit)
println(
"""
= Core commonization performed in ${clock.elapsedSinceLast()}
Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
""".trimIndent()
)
// GC is useless
// for (i in 1..10) {
// System.gc()
// }
//
// println(
// """
// = GC in ${clock.elapsedSinceLast()}
// Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
// Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
// Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
// Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
// """.trimIndent()
// )
// build resulting descriptors:
val components = mergedTree.createGlobalBuilderComponents(storageManager, parameters.statsCollector)
mergedTree.accept(DeclarationsBuilderVisitor1(components), emptyList())
println(
"""
= New descriptors (stage 1) built in ${clock.elapsedSinceLast()}
Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
""".trimIndent()
)
// GC is useless
// for (i in 1..10) {
// System.gc()
// }
//
// println(
// """
// = GC in ${clock.elapsedSinceLast()}
// Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
// Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
// Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
// Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
// """.trimIndent()
// )
mergedTree.accept(DeclarationsBuilderVisitor2(components), emptyList())
println(
"""
= New descriptors (stage 2) built in ${clock.elapsedSinceLast()}
Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
""".trimIndent()
)
// GC is useless
// for (i in 1..10) {
// System.gc()
// }
//
// println(
// """
// = GC in ${clock.elapsedSinceLast()}
// Free (MB): ${Runtime.getRuntime().freeMemory() / 1024 / 1024}
// Used (MB): ${(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024}
// Total (MB): ${Runtime.getRuntime().totalMemory() / 1024 / 1024}
// Max (MB): ${Runtime.getRuntime().maxMemory() / 1024 / 1024}
// """.trimIndent()
// )
val modulesByTargets = LinkedHashMap<Target, Collection<ModuleDescriptor>>() // use linked hash map to preserve order
components.targetComponents.forEach {