mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Add detail to Fabric perf logs (median, average, max)
Summary: I'm finding it useful to keep track of a few additional numbers when doing perf analysis in Fabric. Also making it easier to enable just these perf logs without all of the other verbose Fabric logs. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D36500518 fbshipit-source-id: e57e1e75131c5d59da876d1decb96d4da386f025
This commit is contained in:
committed by
Facebook GitHub Bot
parent
4fc0630faa
commit
0fc42fd35c
@@ -106,6 +106,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
|
||||
ReactFeatureFlags.enableFabricLogs
|
||||
|| PrinterHolder.getPrinter()
|
||||
.shouldDisplayLogMessage(ReactDebugOverlayTags.FABRIC_UI_MANAGER);
|
||||
public static final boolean ENABLE_FABRIC_PERF_LOGS = ENABLE_FABRIC_LOGS || false;
|
||||
public DevToolsReactPerfLogger mDevToolsReactPerfLogger;
|
||||
|
||||
static {
|
||||
@@ -366,30 +367,53 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
|
||||
public void initialize() {
|
||||
mEventDispatcher.registerEventEmitter(FABRIC, new FabricEventEmitter(this));
|
||||
mEventDispatcher.addBatchEventDispatchedListener(mEventBeatManager);
|
||||
if (ENABLE_FABRIC_LOGS) {
|
||||
if (ENABLE_FABRIC_PERF_LOGS) {
|
||||
mDevToolsReactPerfLogger = new DevToolsReactPerfLogger();
|
||||
mDevToolsReactPerfLogger.addDevToolsReactPerfLoggerListener(
|
||||
new DevToolsReactPerfLogger.DevToolsReactPerfLoggerListener() {
|
||||
@Override
|
||||
public void onFabricCommitEnd(DevToolsReactPerfLogger.FabricCommitPoint commitPoint) {
|
||||
long commitDuration = commitPoint.getCommitDuration();
|
||||
long layoutDuration = commitPoint.getLayoutDuration();
|
||||
long diffDuration = commitPoint.getDiffDuration();
|
||||
long transactionEndDuration = commitPoint.getTransactionEndDuration();
|
||||
long batchExecutionDuration = commitPoint.getBatchExecutionDuration();
|
||||
|
||||
DevToolsReactPerfLogger.mStreamingCommitStats.add(commitDuration);
|
||||
DevToolsReactPerfLogger.mStreamingLayoutStats.add(layoutDuration);
|
||||
DevToolsReactPerfLogger.mStreamingDiffStats.add(diffDuration);
|
||||
DevToolsReactPerfLogger.mStreamingTransactionEndStats.add(transactionEndDuration);
|
||||
DevToolsReactPerfLogger.mStreamingBatchExecutionStats.add(batchExecutionDuration);
|
||||
|
||||
FLog.i(
|
||||
TAG,
|
||||
"Statistic of Fabric commit #: "
|
||||
+ commitPoint.getCommitNumber()
|
||||
+ "\n - Total commit time: "
|
||||
+ (commitPoint.getFinishTransactionEnd() - commitPoint.getCommitStart())
|
||||
+ " ms.\n - Layout: "
|
||||
+ (commitPoint.getLayoutEnd() - commitPoint.getLayoutStart())
|
||||
+ " ms.\n - Diffing: "
|
||||
+ (commitPoint.getDiffEnd() - commitPoint.getDiffStart())
|
||||
+ " ms.\n"
|
||||
+ " - FinishTransaction (Diffing + JNI serialization): "
|
||||
+ (commitPoint.getFinishTransactionEnd()
|
||||
- commitPoint.getFinishTransactionStart())
|
||||
+ " ms.\n"
|
||||
+ " - Mounting: "
|
||||
+ (commitPoint.getBatchExecutionEnd() - commitPoint.getBatchExecutionStart())
|
||||
+ " ms.");
|
||||
"Statistics of Fabric commit #%d:\n"
|
||||
+ " - Total commit time: %d ms. Avg: %.2f. Median: %.2f ms. Max: %d ms.\n"
|
||||
+ " - Layout time: %d ms. Avg: %.2f. Median: %.2f ms. Max: %d ms.\n"
|
||||
+ " - Diffing time: %d ms. Avg: %.2f. Median: %.2f ms. Max: %d ms.\n"
|
||||
+ " - FinishTransaction (Diffing + JNI serialization): %d ms. Avg: %.2f. Median: %.2f ms. Max: %d ms.\n"
|
||||
+ " - Mounting: %d ms. Avg: %.2f. Median: %.2f ms. Max: %d ms.\n",
|
||||
commitPoint.getCommitNumber(),
|
||||
commitDuration,
|
||||
DevToolsReactPerfLogger.mStreamingCommitStats.getAverage(),
|
||||
DevToolsReactPerfLogger.mStreamingCommitStats.getMedian(),
|
||||
DevToolsReactPerfLogger.mStreamingCommitStats.getMax(),
|
||||
layoutDuration,
|
||||
DevToolsReactPerfLogger.mStreamingLayoutStats.getAverage(),
|
||||
DevToolsReactPerfLogger.mStreamingLayoutStats.getMedian(),
|
||||
DevToolsReactPerfLogger.mStreamingLayoutStats.getMax(),
|
||||
diffDuration,
|
||||
DevToolsReactPerfLogger.mStreamingDiffStats.getAverage(),
|
||||
DevToolsReactPerfLogger.mStreamingDiffStats.getMedian(),
|
||||
DevToolsReactPerfLogger.mStreamingDiffStats.getMax(),
|
||||
transactionEndDuration,
|
||||
DevToolsReactPerfLogger.mStreamingTransactionEndStats.getAverage(),
|
||||
DevToolsReactPerfLogger.mStreamingTransactionEndStats.getMedian(),
|
||||
DevToolsReactPerfLogger.mStreamingTransactionEndStats.getMax(),
|
||||
batchExecutionDuration,
|
||||
DevToolsReactPerfLogger.mStreamingBatchExecutionStats.getAverage(),
|
||||
DevToolsReactPerfLogger.mStreamingBatchExecutionStats.getMedian(),
|
||||
DevToolsReactPerfLogger.mStreamingBatchExecutionStats.getMax());
|
||||
}
|
||||
});
|
||||
ReactMarker.addFabricListener(mDevToolsReactPerfLogger);
|
||||
|
||||
Reference in New Issue
Block a user