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 errors = mutableListOf<Throwable>()
val result = measureNanoTime { fun buildAllLightClasses(name: String, predicate: (KtClassOrObject) -> Boolean) {
try { val result = measureNanoTime {
// Build light class by PsiFile try {
psiFile.acceptRecursively(object : KtVisitorVoid() { // Build light class by PsiFile
override fun visitClassOrObject(classOrObject: KtClassOrObject) { psiFile.acceptRecursively(object : KtVisitorVoid() {
if (classOrObject.containingDeclarationForPseudocode != null) return override fun visitClassOrObject(classOrObject: KtClassOrObject) {
val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return if (!predicate(classOrObject)) return
Arrays.hashCode(lightClass.superTypes) val lightClass = classOrObject.toLightClass() as? KtLightClassForSourceDeclaration ?: return
Arrays.hashCode(lightClass.fields) Arrays.hashCode(lightClass.superTypes)
Arrays.hashCode(lightClass.methods) Arrays.hashCode(lightClass.fields)
lightClass.hashCode() Arrays.hashCode(lightClass.methods)
} lightClass.hashCode()
}) }
})
} catch (t: Throwable) { } catch (t: Throwable) {
t.printStackTrace() t.printStackTrace()
errors += t 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) return PerFileTestResult(results, totalNs, errors)
} }