diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactVirtualFileListener.kt b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactVirtualFileListener.kt index a359f812c7ac..4e12ea0781e6 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactVirtualFileListener.kt +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactVirtualFileListener.kt @@ -22,7 +22,7 @@ import com.intellij.platform.backend.workspace.useNewWorkspaceModelApi import com.intellij.platform.backend.workspace.workspaceModel import com.intellij.platform.diagnostic.telemetry.Compiler import com.intellij.platform.diagnostic.telemetry.TelemetryManager -import com.intellij.platform.diagnostic.telemetry.helpers.addElapsedTimeMs +import com.intellij.platform.diagnostic.telemetry.helpers.addMeasuredTimeMs import com.intellij.platform.workspace.storage.* import com.intellij.platform.workspace.storage.query.entities import com.intellij.platform.workspace.storage.query.flatMap @@ -47,9 +47,7 @@ internal class ArtifactVirtualFileListener(private val project: Project) : BulkF } } - private fun filePathChanged(oldPath: String, newPath: String) { - val start = System.currentTimeMillis() - + private fun filePathChanged(oldPath: String, newPath: String) = filePathChangedMs.addMeasuredTimeMs { val artifactEntities = if (useNewWorkspaceModelApi()) { val refs = parentPathToArtifactReferences[oldPath]?.asSequence() ?: return val storage = project.workspaceModel.entityStorage.current @@ -79,8 +77,6 @@ internal class ArtifactVirtualFileListener(private val project: Project) : BulkF }, artifactManager.resolvingContext, false) } model.commit() - - filePathChangedMs.addElapsedTimeMs(start) } private val parentPathToArtifactReferences: Map>> @@ -92,9 +88,7 @@ internal class ArtifactVirtualFileListener(private val project: Project) : BulkF private val parentPathToArtifacts: Map> get() = getInstance(project).entityStorage.cachedValue(parentPathsToArtifacts) - private fun propertyChanged(event: VFilePropertyChangeEvent) { - val start = System.currentTimeMillis() - + private fun propertyChanged(event: VFilePropertyChangeEvent) = propertyChangedMs.addMeasuredTimeMs { if (VirtualFile.PROP_NAME == event.propertyName) { val parent = event.file.parent if (parent != null) { @@ -102,8 +96,6 @@ internal class ArtifactVirtualFileListener(private val project: Project) : BulkF filePathChanged(parentPath + "/" + event.oldValue, parentPath + "/" + event.newValue) } } - - propertyChangedMs.addElapsedTimeMs(start) } companion object { diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactBridge.kt b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactBridge.kt index 50b871629cf8..b75651fe0ab1 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactBridge.kt +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactBridge.kt @@ -19,7 +19,7 @@ import com.intellij.platform.backend.workspace.WorkspaceModelTopics import com.intellij.platform.backend.workspace.virtualFile import com.intellij.platform.diagnostic.telemetry.Compiler import com.intellij.platform.diagnostic.telemetry.TelemetryManager -import com.intellij.platform.diagnostic.telemetry.helpers.addElapsedTimeMs +import com.intellij.platform.diagnostic.telemetry.helpers.addMeasuredTimeMs import com.intellij.platform.workspace.jps.JpsImportedEntitySource import com.intellij.platform.workspace.storage.* import com.intellij.platform.workspace.storage.impl.VersionedEntityStorageOnBuilder @@ -42,8 +42,7 @@ open class ArtifactBridge( init { project.messageBus.connect().subscribe(WorkspaceModelTopics.CHANGED, object : WorkspaceModelChangeListener { - override fun beforeChanged(event: VersionedStorageChange) { - val start = System.currentTimeMillis() + override fun beforeChanged(event: VersionedStorageChange) = beforeChangedMs.addMeasuredTimeMs { event.getChanges(ArtifactEntity::class.java).filterIsInstance>().forEach { if (it.entity.symbolicId != artifactId) return@forEach @@ -61,8 +60,6 @@ open class ArtifactBridge( entityStorage = VersionedEntityStorageOnBuilder(event.storageBefore.toBuilder()) assert(artifactId in entityStorage.base) { "Cannot resolve artifact $artifactId." } } - - beforeChangedMs.addElapsedTimeMs(start) } }) } diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactManagerBridge.kt b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactManagerBridge.kt index 9c718d0464f1..511917b873de 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactManagerBridge.kt +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactManagerBridge.kt @@ -27,6 +27,7 @@ import com.intellij.platform.backend.workspace.workspaceModel import com.intellij.platform.diagnostic.telemetry.Compiler import com.intellij.platform.diagnostic.telemetry.TelemetryManager import com.intellij.platform.diagnostic.telemetry.helpers.addElapsedTimeMs +import com.intellij.platform.diagnostic.telemetry.helpers.addMeasuredTimeMs import com.intellij.platform.workspace.storage.* import com.intellij.util.concurrency.annotations.RequiresReadLock import com.intellij.util.concurrency.annotations.RequiresWriteLock @@ -49,36 +50,28 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D } @RequiresReadLock - override fun getArtifacts(): Array { - val start = System.currentTimeMillis() - + override fun getArtifacts(): Array = getArtifactsMs.addMeasuredTimeMs { initBridges() val store = project.workspaceModel.currentSnapshot - val artifacts: Array = store + return@addMeasuredTimeMs store .entities(ArtifactEntity::class.java) .map { store.artifactsMap.getDataByEntity(it) ?: error("All artifact bridges should be already created at this moment") } .filter { VALID_ARTIFACT_CONDITION.value(it) } .toList().toTypedArray() - - getArtifactsMs.addElapsedTimeMs(start) - return artifacts } @RequiresReadLock - override fun findArtifact(name: String): Artifact? { - val start = System.currentTimeMillis() + override fun findArtifact(name: String): Artifact? = findArtifactMs.addMeasuredTimeMs { initBridges() val store = project.workspaceModel.currentSnapshot val artifactEntity = store.resolve(ArtifactId(name)) ?: return null - val artifactBridge: ArtifactBridge = store.artifactsMap.getDataByEntity(artifactEntity) - ?: error("All artifact bridges should be already created at this moment") - findArtifactMs.addElapsedTimeMs(start) - return artifactBridge + return@addMeasuredTimeMs store.artifactsMap.getDataByEntity(artifactEntity) + ?: error("All artifact bridges should be already created at this moment") } override fun getArtifactByOriginal(artifact: Artifact): Artifact = artifact @@ -86,9 +79,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D override fun getOriginalArtifact(artifact: Artifact): Artifact = artifact @RequiresReadLock - override fun getArtifactsByType(type: ArtifactType): List { - val start = System.currentTimeMillis() - + override fun getArtifactsByType(type: ArtifactType): List = getArtifactsByTypeMs.addMeasuredTimeMs { // XXX @RequiresReadLock annotation doesn't work for kt now ApplicationManager.getApplication().assertReadAccessAllowed() initBridges() @@ -96,14 +87,11 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D val store = project.workspaceModel.currentSnapshot val typeId = type.id - val artifacts: List = store + return@addMeasuredTimeMs store .entities(ArtifactEntity::class.java) .filter { it.artifactType == typeId } .map { store.artifactsMap.getDataByEntity(it) ?: error("All artifact bridges should be already created at this moment") } .toList() - - getArtifactsByTypeMs.addElapsedTimeMs(start) - return artifacts } @RequiresReadLock @@ -142,9 +130,8 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D override fun getResolvingContext(): PackagingElementResolvingContext = resolvingContext - override fun addArtifact(name: String, type: ArtifactType, root: CompositePackagingElement<*>?): Artifact { - val start = System.currentTimeMillis() - val artifact = WriteAction.compute(ThrowableComputable { + override fun addArtifact(name: String, type: ArtifactType, root: CompositePackagingElement<*>?): Artifact = addArtifactMs.addMeasuredTimeMs { + return@addMeasuredTimeMs WriteAction.compute(ThrowableComputable { val model = createModifiableModel() val artifact = model.addArtifact(name, type) if (root != null) { @@ -153,9 +140,6 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D model.commit() artifact }) - - addArtifactMs.addElapsedTimeMs(start) - return artifact } override fun addElementsToDirectory(artifact: Artifact, relativePath: String, elements: Collection>) { @@ -174,9 +158,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D } @RequiresWriteLock - fun commit(artifactModel: ArtifactModifiableModelBridge) { - val start = System.currentTimeMillis() - + fun commit(artifactModel: ArtifactModifiableModelBridge) = commitMs.addMeasuredTimeMs { // XXX @RequiresReadLock annotation doesn't work for kt now ApplicationManager.getApplication().assertWriteAccessAllowed() LOG.trace { "Committing artifact manager bridge. diff: ${artifactModel.diff}" } @@ -271,8 +253,6 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D if (changes.isNotEmpty()) { BuildManager.getInstance().clearState(project) } - - commitMs.addElapsedTimeMs(start) } private fun updateCustomElements(diff: MutableEntityStorage) { @@ -291,9 +271,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D // Initialize all artifact bridges @RequiresReadLock - private fun initBridges() { - val start = System.currentTimeMillis() - + private fun initBridges() = initBridgesMs.addMeasuredTimeMs { // XXX @RequiresReadLock annotation doesn't work for kt now ApplicationManager.getApplication().assertReadAccessAllowed() val workspaceModel = project.workspaceModel @@ -322,8 +300,6 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D } } } - - initBridgesMs.addElapsedTimeMs(start) } companion object { diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactModifiableModelBridge.kt b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactModifiableModelBridge.kt index ce7fae3cbf55..047ce7e7d4df 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactModifiableModelBridge.kt +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/workspacemodel/ArtifactModifiableModelBridge.kt @@ -18,7 +18,6 @@ import com.intellij.packaging.impl.artifacts.workspacemodel.ArtifactManagerBridg import com.intellij.platform.backend.workspace.WorkspaceModel import com.intellij.platform.diagnostic.telemetry.Compiler import com.intellij.platform.diagnostic.telemetry.TelemetryManager -import com.intellij.platform.diagnostic.telemetry.helpers.addElapsedTimeMs import com.intellij.platform.diagnostic.telemetry.helpers.addMeasuredTimeMs import com.intellij.platform.workspace.storage.EntityChange import com.intellij.platform.workspace.storage.MutableEntityStorage @@ -47,9 +46,7 @@ class ArtifactModifiableModelBridge( private val versionedOnBuilder = VersionedEntityStorageOnBuilder(diff) - override fun getArtifacts(): Array { - val start = System.currentTimeMillis() - + override fun getArtifacts(): Array = getArtifactsMs.addMeasuredTimeMs { val newBridges = mutableListOf() val artifacts = diff .entities(ArtifactEntity::class.java) @@ -62,14 +59,10 @@ class ArtifactModifiableModelBridge( .filter { VALID_ARTIFACT_CONDITION.value(it) } .toList().toTypedArray() addBridgesToDiff(newBridges, diff) - val out = artifacts.mapInPlace { modifiableToOriginal.getKeysByValue(it)?.singleOrNull() ?: it } - getArtifactsMs.addElapsedTimeMs(start) - return out + return@addMeasuredTimeMs artifacts.mapInPlace { modifiableToOriginal.getKeysByValue(it)?.singleOrNull() ?: it } } - override fun findArtifact(name: String): Artifact? { - val start = System.currentTimeMillis() - + override fun findArtifact(name: String): Artifact? = findArtifactMs.addMeasuredTimeMs { val artifactEntity = diff.resolve(ArtifactId(name)) ?: return null val newBridges = mutableListOf() @@ -80,9 +73,7 @@ class ArtifactModifiableModelBridge( } addBridgesToDiff(newBridges, diff) - val artifactBridge: ArtifactBridge = modifiableToOriginal.getKeysByValue(bridge)?.singleOrNull() ?: bridge - findArtifactMs.addElapsedTimeMs(start) - return artifactBridge + return@addMeasuredTimeMs modifiableToOriginal.getKeysByValue(bridge)?.singleOrNull() ?: bridge } override fun getArtifactByOriginal(artifact: Artifact): Artifact { @@ -93,9 +84,7 @@ class ArtifactModifiableModelBridge( return modifiableToOriginal[artifact as ArtifactBridge] ?: artifact } - override fun getArtifactsByType(type: ArtifactType): Collection { - val start = System.currentTimeMillis() - + override fun getArtifactsByType(type: ArtifactType): Collection = getArtifactsByTypeMs.addMeasuredTimeMs { val typeId = type.id val newBridges = mutableListOf() @@ -111,7 +100,6 @@ class ArtifactModifiableModelBridge( .toList() addBridgesToDiff(newBridges, diff) - getArtifactsByTypeMs.addElapsedTimeMs(start) return artifacts } @@ -133,8 +121,7 @@ class ArtifactModifiableModelBridge( override fun addArtifact(name: String, artifactType: ArtifactType, rootElement: CompositePackagingElement<*>, - externalSource: ProjectModelExternalSource?): ModifiableArtifact { - val start = System.currentTimeMillis() + externalSource: ProjectModelExternalSource?): ModifiableArtifact = addArtifactMs.addMeasuredTimeMs { val uniqueName = generateUniqueName(name) val outputPath = ArtifactUtil.getDefaultArtifactOutputPath(uniqueName, project) @@ -164,7 +151,6 @@ class ArtifactModifiableModelBridge( eventDispatcher.multicaster.artifactAdded(modifiableArtifact) - addArtifactMs.addElapsedTimeMs(start) return modifiableArtifact } @@ -221,16 +207,13 @@ class ArtifactModifiableModelBridge( } @RequiresWriteLock - override fun commit() { - commitMs.addMeasuredTimeMs { - // XXX @RequiresReadLock annotation doesn't work for kt now - ApplicationManager.getApplication().assertWriteAccessAllowed() - manager.commit(this) - } + override fun commit() = commitMs.addMeasuredTimeMs { + // XXX @RequiresReadLock annotation doesn't work for kt now + ApplicationManager.getApplication().assertWriteAccessAllowed() + manager.commit(this) } - override fun dispose() { - val start = System.currentTimeMillis() + override fun dispose() = disposeMs.addMeasuredTimeMs { val artifacts: MutableList = ArrayList() val modifiableToOriginalCopy = BidirectionalMap() @@ -281,8 +264,6 @@ class ArtifactModifiableModelBridge( bridge.elementsWithDiff.forEach { it.setStorage(entityStorage, project, HashSet(), PackagingElementInitializer) } bridge.elementsWithDiff.clear() } - - disposeMs.addElapsedTimeMs(start) } companion object {