mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[artifacts metrics] AT-598 Taking into account all the returns in measured code
GitOrigin-RevId: f2a9833a22cc6c4d6148a232a97fefd830022051
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2c9e6d6595
commit
57e33ebc7f
+3
-11
@@ -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<String, List<EntityReference<ArtifactEntity>>>
|
||||
@@ -92,9 +88,7 @@ internal class ArtifactVirtualFileListener(private val project: Project) : BulkF
|
||||
private val parentPathToArtifacts: Map<String, List<ArtifactEntity>>
|
||||
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 {
|
||||
|
||||
+2
-5
@@ -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<EntityChange.Removed<ArtifactEntity>>().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)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
+12
-36
@@ -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<ArtifactBridge> {
|
||||
val start = System.currentTimeMillis()
|
||||
|
||||
override fun getArtifacts(): Array<ArtifactBridge> = getArtifactsMs.addMeasuredTimeMs {
|
||||
initBridges()
|
||||
|
||||
val store = project.workspaceModel.currentSnapshot
|
||||
|
||||
val artifacts: Array<ArtifactBridge> = 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<ArtifactBridge> {
|
||||
val start = System.currentTimeMillis()
|
||||
|
||||
override fun getArtifactsByType(type: ArtifactType): List<ArtifactBridge> = 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<ArtifactBridge> = 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<ModifiableArtifact, RuntimeException> {
|
||||
override fun addArtifact(name: String, type: ArtifactType, root: CompositePackagingElement<*>?): Artifact = addArtifactMs.addMeasuredTimeMs {
|
||||
return@addMeasuredTimeMs WriteAction.compute(ThrowableComputable<ModifiableArtifact, RuntimeException> {
|
||||
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<PackagingElement<*>>) {
|
||||
@@ -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 {
|
||||
|
||||
+11
-30
@@ -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<ArtifactBridge> {
|
||||
val start = System.currentTimeMillis()
|
||||
|
||||
override fun getArtifacts(): Array<ArtifactBridge> = getArtifactsMs.addMeasuredTimeMs {
|
||||
val newBridges = mutableListOf<ArtifactBridge>()
|
||||
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<ArtifactBridge>()
|
||||
@@ -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<Artifact> {
|
||||
val start = System.currentTimeMillis()
|
||||
|
||||
override fun getArtifactsByType(type: ArtifactType): Collection<Artifact> = getArtifactsByTypeMs.addMeasuredTimeMs {
|
||||
val typeId = type.id
|
||||
|
||||
val newBridges = mutableListOf<ArtifactBridge>()
|
||||
@@ -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<Artifact> = ArrayList()
|
||||
|
||||
val modifiableToOriginalCopy = BidirectionalMap<ArtifactBridge, ArtifactBridge>()
|
||||
@@ -281,8 +264,6 @@ class ArtifactModifiableModelBridge(
|
||||
bridge.elementsWithDiff.forEach { it.setStorage(entityStorage, project, HashSet(), PackagingElementInitializer) }
|
||||
bridge.elementsWithDiff.clear()
|
||||
}
|
||||
|
||||
disposeMs.addElapsedTimeMs(start)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
Reference in New Issue
Block a user