Add new performance metric in Fabric

Summary: This diff adds a new metric in Fabric to measure time it takes to Fabric finish transaction in CPP

Reviewed By: shergin

Differential Revision: D14198153

fbshipit-source-id: 987d1db1ae669906192060cc9b9e077901da6787
This commit is contained in:
David Vacca
2019-02-24 11:55:49 -08:00
committed by Facebook Github Bot
parent 10679a97c3
commit daccb54353
2 changed files with 13 additions and 4 deletions
@@ -114,6 +114,9 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
private long mCommitStartTime = 0l;
private long mLayoutTime = 0l;
private long mFinishTransactionTime = 0l;
private int mLastWidthMeasureSpec = 0;
private int mLastHeightMeasureSpec = 0;
private long mFinishTransactionCPPTime = 0l;
public FabricUIManager(
ReactApplicationContext reactContext,
@@ -273,7 +276,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
@Override
public void synchronouslyUpdateViewOnUIThread(int reactTag, ReadableMap props) {
long time = SystemClock.uptimeMillis();
scheduleMountItems(updatePropsMountItem(reactTag, props), time, time, time);
scheduleMountItems(updatePropsMountItem(reactTag, props), time, 0, time, time);
}
/**
@@ -286,11 +289,13 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
final MountItem mountItems,
long commitStartTime,
long layoutTime,
long finishTransactionStartTime) {
long finishTransactionStartTime,
long finishTransactionEndTime) {
// TODO T31905686: support multithreading
mCommitStartTime = commitStartTime;
mLayoutTime = layoutTime;
mFinishTransactionCPPTime = finishTransactionEndTime - finishTransactionStartTime;
mFinishTransactionTime = SystemClock.uptimeMillis() - finishTransactionStartTime;
mDispatchViewUpdatesTime = SystemClock.uptimeMillis();
synchronized (mMountItemsLock) {
@@ -430,6 +435,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
performanceCounters.put("BatchedExecutionTime", mBatchedExecutionTime);
performanceCounters.put("NonBatchedExecutionTime", mNonBatchedExecutionTime);
performanceCounters.put("FinishFabricTransactionTime", mFinishTransactionTime);
performanceCounters.put("FinishFabricTransactionCPPTime", mFinishTransactionCPPTime);
return performanceCounters;
}
@@ -441,15 +441,18 @@ void Binding::schedulerDidFinishTransaction(
static auto scheduleMountItems =
jni::findClassStatic(UIManagerJavaDescriptor)
->getMethod<void(JMountItem::javaobject, jlong, jlong, jlong)>(
->getMethod<void(JMountItem::javaobject, jlong, jlong, jlong, jlong)>(
"scheduleMountItems");
long finishTransactionEndTime = getTime();
scheduleMountItems(
javaUIManager_,
batch.get(),
commitStartTime,
layoutTime,
finishTransactionStartTime);
finishTransactionStartTime,
finishTransactionEndTime);
}
void Binding::setPixelDensity(float pointScaleFactor) {