Light class performance test: build also light nested classes

So #KT-24085 In Progress
This commit is contained in:
Mikhail Glukhikh
2018-04-19 17:56:08 +03:00
parent bb4cf08d0b
commit 75eeb32970
@@ -27,27 +27,37 @@ class AllKotlinLightClassTest : WholeProjectPerformanceTest(), WholeProjectKotli
val errors = mutableListOf<Throwable>()
val result = measureNanoTime {
try {
// Build light class by PsiFile
psiFile.acceptRecursively(object : KtVisitorVoid() {
override fun visitClassOrObject(classOrObject: KtClassOrObject) {
if (classOrObject.containingDeclarationForPseudocode != null) return
val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return
Arrays.hashCode(lightClass.superTypes)
Arrays.hashCode(lightClass.fields)
Arrays.hashCode(lightClass.methods)
lightClass.hashCode()
}
})
fun buildAllLightClasses(name: String, predicate: (KtClassOrObject) -> Boolean) {
val result = measureNanoTime {
try {
// Build light class by PsiFile
psiFile.acceptRecursively(object : KtVisitorVoid() {
override fun visitClassOrObject(classOrObject: KtClassOrObject) {
if (!predicate(classOrObject)) return
val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return
Arrays.hashCode(lightClass.superTypes)
Arrays.hashCode(lightClass.fields)
Arrays.hashCode(lightClass.methods)
lightClass.hashCode()
}
})
} catch (t: Throwable) {
t.printStackTrace()
errors += t
} catch (t: Throwable) {
t.printStackTrace()
errors += t
}
}
results[name] = result
totalNs += result
}
buildAllLightClasses("LightClasses_Top") {
it.containingDeclarationForPseudocode == null
}
buildAllLightClasses("LightClasses_Members") {
!it.isLocal && it.containingDeclarationForPseudocode is KtClassOrObject
}
results["LightClasses_Top"] = result
totalNs += result
return PerFileTestResult(results, totalNs, errors)
}