You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by mi...@apache.org on 2017/08/15 09:51:29 UTC

[04/16] incubator-weex git commit: * [android] add TraceInfo on every component

* [android] add TraceInfo on every component


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/afeedd92
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/afeedd92
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/afeedd92

Branch: refs/heads/0.16-dev
Commit: afeedd922c81f16c0bc1cf8907a984efcd5da25f
Parents: 4bb0f14
Author: misakuo <mi...@apache.org>
Authored: Tue Jul 25 16:06:18 2017 +0800
Committer: misakuo <mi...@apache.org>
Committed: Tue Jul 25 16:06:18 2017 +0800

----------------------------------------------------------------------
 .../taobao/weex/ui/component/WXComponent.java   | 27 +++++++++++++++++++-
 .../ui/component/list/BasicListComponent.java   |  1 +
 2 files changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/afeedd92/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index 985b616..cc44e79 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -39,6 +39,7 @@ import android.view.Menu;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
+
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.taobao.weex.ComponentObserver;
@@ -57,6 +58,8 @@ import com.taobao.weex.dom.WXDomTask;
 import com.taobao.weex.dom.WXStyle;
 import com.taobao.weex.dom.action.Actions;
 import com.taobao.weex.dom.flex.Spacing;
+import com.taobao.weex.tracing.Stopwatch;
+import com.taobao.weex.tracing.WXTracing;
 import com.taobao.weex.ui.IFComponentHolder;
 import com.taobao.weex.ui.animation.WXAnimationModule;
 import com.taobao.weex.ui.component.pesudo.OnActivePseudoListner;
@@ -72,6 +75,7 @@ import com.taobao.weex.utils.WXReflectionUtils;
 import com.taobao.weex.utils.WXResourceUtils;
 import com.taobao.weex.utils.WXUtils;
 import com.taobao.weex.utils.WXViewUtils;
+
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -123,6 +127,8 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
   private int mType = TYPE_COMMON;
   private boolean mNeedLayoutOnAnimation = false;
 
+  public WXTracing.TraceInfo mTraceInfo = new WXTracing.TraceInfo();
+
   public static final int TYPE_COMMON = 0;
   public static final int TYPE_VIRTUAL = 1;
 
@@ -286,6 +292,7 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
   }
 
   public void applyLayoutAndEvent(WXComponent component) {
+    long startNanos = System.nanoTime();
     if(!isLazy()) {
       if (component == null) {
         component = this;
@@ -293,8 +300,8 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
       setLayout(component.getDomObject());
       setPadding(component.getDomObject().getPadding(), component.getDomObject().getBorder());
       addEvents();
-
     }
+    mTraceInfo.uiThreadNanos += (System.nanoTime() - startNanos);
   }
 
   protected final void addFocusChangeListener(OnFocusChangeListener l){
@@ -348,6 +355,7 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
   }
 
   public void bindData(WXComponent component){
+    long startNanos = System.nanoTime();
     if(!isLazy()) {
       if (component == null) {
         component = this;
@@ -357,6 +365,7 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
       updateAttrs(component);
       updateExtra(component.getDomObject().getExtra());
     }
+    mTraceInfo.uiThreadNanos += (System.nanoTime() - startNanos);
   }
 
   public void updateStyle(WXComponent component){
@@ -893,9 +902,12 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
    *
    */
   public final void createView() {
+    long startNanos = System.nanoTime();
     if(!isLazy()) {
       createViewImpl();
     }
+    mTraceInfo.uiThreadStart = System.currentTimeMillis();
+    mTraceInfo.uiThreadNanos += (System.nanoTime() - startNanos);
   }
 
   protected void createViewImpl() {
@@ -1543,4 +1555,17 @@ public abstract class  WXComponent<T extends View> implements IWXObject, IWXActi
     message.what = WXDomHandler.MsgType.WX_DOM_UPDATE_STYLE;
     WXSDKManager.getInstance().getWXDomManager().sendMessage(message);
   }
+
+  public void onRenderFinish() {
+    if (isLazy()) {
+      return;
+    }
+    double domTime = Stopwatch.nanosToMillis(((WXDomObject) mDomObj).mDomThreadNanos + mTraceInfo.domThreadNanos);
+    double uiTime = Stopwatch.nanosToMillis(mTraceInfo.uiThreadNanos);
+    WXLogUtils.e("RenderFinish", "Ref: " + getRef() + ", type: " + mDomObj.getType() + ", dom: " + mTraceInfo.domQueueTime + "/" + domTime + ", ui: " + mTraceInfo.uiQueueTime + "/" + uiTime);
+    WXTracing.TraceEvent domEvent = WXTracing.measureAndSubmit("dom " + mDomObj.getType() + "@" + getRef(), "X", mTraceInfo.rootEventId, getInstanceId(), domTime);
+    domEvent.ts = mTraceInfo.domThreadStart;
+    domEvent.tname = "DOMThread";
+    WXTracing.measureAndSubmit("ui " + mDomObj.getType() + "@" + getRef(), "X", mTraceInfo.rootEventId, getInstanceId(), uiTime).ts = mTraceInfo.uiThreadStart;
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/afeedd92/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
index 306be55..9418a1f 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/BasicListComponent.java
@@ -850,6 +850,7 @@ public abstract class BasicListComponent<T extends ViewGroup & ListComponentView
     if (holder.getComponent() != null && holder.getComponent() instanceof WXCell) {
       if(holder.isRecycled()) {
         holder.bindData(component);
+        component.onRenderFinish();
       }
       if (mDragHelper == null || !mDragHelper.isDraggable()) {
         return;