diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Events.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Events.kt index 09c0d6f7c..8a25a536d 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Events.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Events.kt @@ -49,7 +49,8 @@ data class PerfStatsEvent( val queuingMS: Long, val deferredComputationMS: Long, val serializationMS: Long, - val socketMS: Long + val socketMS: Long, + val payloadSize: Int, ) { companion object { const val name = "performanceStats" diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/observers/TreeObserverManager.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/observers/TreeObserverManager.kt index 0cd45e99f..35d6c453b 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/observers/TreeObserverManager.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/observers/TreeObserverManager.kt @@ -142,6 +142,10 @@ class TreeObserverManager(val context: UIDContext) { val socketEndTimestamp = System.currentTimeMillis() Log.i(LogTag, "Sent event for batched subtree update with nodes with ${nodes.size}") + // Note about payload size: + // Payload size is an approximation as it assumes all characters + // are ASCII encodable, this should be true for most of the payload content. + // So, assume each character will at most occupy one byte. val perfStats = PerfStatsEvent( txId = batchedUpdate.frameTimeMs, @@ -154,7 +158,8 @@ class TreeObserverManager(val context: UIDContext) { workerThreadStartTimestamp - batchedUpdate.updates.minOf { it.queuedTimestamp }, deferredComputationMS = (deferredComputationEndTimestamp - workerThreadStartTimestamp), serializationMS = (serialisationEndTimestamp - deferredComputationEndTimestamp), - socketMS = (socketEndTimestamp - serialisationEndTimestamp)) + socketMS = (socketEndTimestamp - serialisationEndTimestamp), + payloadSize = serialized.length) context.connectionRef.connection?.send( PerfStatsEvent.name, Json.encodeToString(PerfStatsEvent.serializer(), perfStats))