You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2018/05/16 12:09:19 UTC
[1/5] incubator-weex git commit: * [core] Support WeexCore
Performance.
Repository: incubator-weex
Updated Branches:
refs/heads/master 6d5992ee5 -> 97da4cb71
* [core] Support WeexCore Performance.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/1806f233
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/1806f233
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/1806f233
Branch: refs/heads/master
Commit: 1806f233ccd54294249a5e75c4519ffab82ce07d
Parents: 6d5992e
Author: miomin <69...@qq.com>
Authored: Thu May 10 17:31:05 2018 +0800
Committer: miomin <69...@qq.com>
Committed: Wed May 16 17:46:06 2018 +0800
----------------------------------------------------------------------
.../java/com/taobao/weex/WXSDKInstance.java | 92 ++-------
.../java/com/taobao/weex/bridge/WXBridge.java | 71 +------
.../com/taobao/weex/bridge/WXBridgeManager.java | 16 +-
.../java/com/taobao/weex/common/IWXBridge.java | 10 +-
.../com/taobao/weex/common/WXPerformance.java | 53 +----
.../action/GraphicActionAbstractAddElement.java | 7 +
.../weex/ui/action/GraphicActionAddElement.java | 5 +-
.../weex/ui/action/GraphicActionCreateBody.java | 7 +-
.../weex/ui/action/GraphicActionLayout.java | 5 -
.../android/bridge/impl/bridge_impl_android.cpp | 195 ++++++++++++-------
.../bridge/impl/weexcore_impl_android.cpp | 84 +++++++-
.../jniprebuild/jniheader/WXBridge_jni.h | 12 +-
.../Source/core/moniter/render_performance.cpp | 35 ++--
.../Source/core/moniter/render_performance.h | 38 ++--
.../render/action/render_action_add_element.cpp | 6 -
.../render/action/render_action_add_event.cpp | 9 -
.../render/action/render_action_createbody.cpp | 7 -
.../action/render_action_createfinish.cpp | 7 -
.../core/render/action/render_action_layout.cpp | 7 -
.../action/render_action_move_element.cpp | 6 -
.../action/render_action_remove_element.cpp | 6 -
.../action/render_action_remove_event.cpp | 9 -
.../render/action/render_action_update_attr.cpp | 7 -
.../action/render_action_update_style.cpp | 7 -
.../core/render/manager/render_manager.cpp | 15 +-
.../Source/core/render/page/render_page.cpp | 79 +++-----
weex_core/Source/core/render/page/render_page.h | 26 +--
27 files changed, 333 insertions(+), 488 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index 682e9f2..5459bbc 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -1119,14 +1119,16 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
firstScreenRenderFinished();
long time = System.currentTimeMillis() - mRenderStartTime;
+ long[] renderFinishTime = WXBridgeManager.getInstance().getRenderFinishTime(getInstanceId());
WXLogUtils.renderPerformanceLog("onRenderSuccess", time);
- WXLogUtils.renderPerformanceLog(" firstCallAddElementSumTime("+mWXPerformance.mActionAddElementCount+")", mWXPerformance.mCallAddElementSumTime);
- WXLogUtils.renderPerformanceLog(" firstCallLayoutSumTime("+mWXPerformance.mActionLayoutCount+")", mWXPerformance.mCallLayoutSumTime);
WXLogUtils.renderPerformanceLog(" invokeCreateInstance",mWXPerformance.communicateTime);
- WXLogUtils.renderPerformanceLog(" TotalApplyUpdateTime", mWXPerformance.applyUpdateTime);
- WXLogUtils.renderPerformanceLog(" TotalUpdateDomObjTime", mWXPerformance.updateDomObjTime);
+ WXLogUtils.renderPerformanceLog(" onRenderSuccessCallBridgeTime", renderFinishTime[0]);
+ WXLogUtils.renderPerformanceLog(" onRenderSuccessCssLayoutTime", renderFinishTime[1]);
+ WXLogUtils.renderPerformanceLog(" onRenderSuccessParseJsonTime", renderFinishTime[2]);
- WXBridgeManager.getInstance().printRenderFinishTime(getInstanceId());
+ mWXPerformance.callBridgeTime = renderFinishTime[0];
+ mWXPerformance.cssLayoutTime = renderFinishTime[1];
+ mWXPerformance.parseJsonTime = renderFinishTime[2];
mWXPerformance.totalTime = time;
if(mWXPerformance.screenRenderTime<0.001){
@@ -1246,13 +1248,6 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
}
}
- public void callNativeTime(final long time) {
- if (!mEnd){
- mWXPerformance.fsCallNativeTotalTime += time;
- mWXPerformance.fsCallNativeTotalNum++;
- }
- }
-
public void callJsTime(final long time){
if (!mEnd){
mWXPerformance.fsCallJsTotalTime+=time;
@@ -1260,34 +1255,6 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
}
}
- public void callCreateBodyTime(long time) {
- mWXPerformance.mCallCreateBodySumTime += time;
- }
-
- public void callAddElementTime(long time) {
- mWXPerformance.mCallAddElementSumTime += time;
- }
-
- public void callLayoutTime(long time) {
- mWXPerformance.mCallLayoutSumTime += time;
- }
-
- public void callLayoutUpdateDemissionTime(long time) {
- mWXPerformance.mCallLayoutUpdateDemissionSumTime += time;
- }
-
- public void callLayoutaAplyLayoutAndEventTime(long time) {
- mWXPerformance.mCallLayoutApplyLayoutAndEventSumTime += time;
- }
-
- public void callLayoutBindDataCoreTime(long time) {
- mWXPerformance.mCallLayoutBindDataSumTime += time;
- }
-
- public void callActionLayoutTime(long time) {
- mWXPerformance.mActionLayoutSumTime += time;
- }
-
public void onComponentCreate(WXComponent component,long createTime) {
mWXPerformance.mActionAddElementCount++;
mWXPerformance.mActionAddElementSumTime += createTime;
@@ -1299,28 +1266,8 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
mWXPerformance.componentCreateTime+=createTime;
}
- public void callActionCreateBodyTime(long time) {
- mWXPerformance.mActionCreateBodySumTime += time;
- }
-
- public void callActionOtherTime(long time) {
- mWXPerformance.mActionOtherSumTime += time;
- }
-
- public void callActionCreateBodyCount() {
- mWXPerformance.mActionCreateBodyCount++;
- }
-
- public void callActionLayoutCount() {
- mWXPerformance.mActionLayoutCount++;
- }
-
- public void callActionOtherCount() {
- mWXPerformance.mActionOtherCount++;
- }
-
- public void jsonParseTime(long time) {
- mWXPerformance.parseJsonTime += time;
+ public void callActionAddElementTime(long time) {
+ mWXPerformance.mActionAddElementSumTime += time;
}
public void firstScreenRenderFinished() {
@@ -1344,23 +1291,12 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
mWXPerformance.screenRenderTime = System.currentTimeMillis() - mRenderStartTime;
mWXPerformance.fsRenderTime = System.currentTimeMillis();
- WXLogUtils.renderPerformanceLog("firstScreenJSFAndWeexCoreExecuteTime", mWXPerformance.firstScreenJSFExecuteTime);
+ long[] fitstScreenPerformance = WXBridgeManager.getInstance().getFirstScreenRenderTime(getInstanceId());
WXLogUtils.renderPerformanceLog("firstScreenRenderFinished", mWXPerformance.screenRenderTime);
- WXLogUtils.renderPerformanceLog(" firstScreenApplyUpdateTime", mWXPerformance.applyUpdateTime);
- WXLogUtils.renderPerformanceLog(" firstScreenUpdateDomObjTime", mWXPerformance.updateDomObjTime);
- WXLogUtils.renderPerformanceLog(" firstCallCreateBodySumTime("+mWXPerformance.mActionCreateBodyCount+")", mWXPerformance.mCallCreateBodySumTime);
- WXLogUtils.renderPerformanceLog(" firstCallAddElementSumTime("+mWXPerformance.mActionAddElementCount+")", mWXPerformance.mCallAddElementSumTime);
- WXLogUtils.renderPerformanceLog(" firstCallLayoutSumTime("+mWXPerformance.mActionLayoutCount+")", mWXPerformance.mCallLayoutSumTime);
- WXLogUtils.renderPerformanceLog(" firstScreenRenderSumTime", mWXPerformance.renderSumTime());
- WXLogUtils.renderPerformanceLog(" firstActionCreateBodySumTime", mWXPerformance.mActionCreateBodySumTime);
- WXLogUtils.renderPerformanceLog(" firstActionAddElementSumTime", mWXPerformance.mActionAddElementSumTime);
- WXLogUtils.renderPerformanceLog(" firstActionLayoutSumTime", mWXPerformance.mActionLayoutSumTime);
- WXLogUtils.renderPerformanceLog(" firstCallLayoutUpdateDemissionSumTime", mWXPerformance.mCallLayoutUpdateDemissionSumTime);
- WXLogUtils.renderPerformanceLog(" firstCallLayoutApplyLayoutAndEventSumTime", mWXPerformance.mCallLayoutApplyLayoutAndEventSumTime);
- WXLogUtils.renderPerformanceLog(" firstCallLayoutBindDataSumTime", mWXPerformance.mCallLayoutBindDataSumTime);
- WXLogUtils.renderPerformanceLog(" firstActionOtherSumTime("+mWXPerformance.mActionOtherCount+")", mWXPerformance.mActionOtherSumTime);
-
- WXBridgeManager.getInstance().printFirstScreenRenderTime(getInstanceId());
+ WXLogUtils.renderPerformanceLog(" firstScreenJSFExecuteTime", mWXPerformance.firstScreenJSFExecuteTime);
+ WXLogUtils.renderPerformanceLog(" firstScreenCallBridgeTime", fitstScreenPerformance[0]);
+ WXLogUtils.renderPerformanceLog(" firstScreenCssLayoutTime", fitstScreenPerformance[1]);
+ WXLogUtils.renderPerformanceLog(" firstScreenParseJsonTime", fitstScreenPerformance[2]);
}
public void createInstanceFinished(long time) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
index f335a8a..a9f6730 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
@@ -19,13 +19,11 @@
package com.taobao.weex.bridge;
import android.util.Log;
-import android.util.SparseArray;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.taobao.weex.WXEnvironment;
-import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.WXSDKManager;
import com.taobao.weex.adapter.IWXUserTrackAdapter;
import com.taobao.weex.common.IWXBridge;
@@ -69,9 +67,9 @@ public class WXBridge implements IWXBridge {
private native void nativeSetRenderContainerWrapContent(boolean wrap, String instanceId);
- public native int nativePrintFirstScreenRenderTime(String instanceId);
+ public native long[] nativeGetFirstScreenRenderTime(String instanceId);
- public native int nativePrintRenderFinishTime(String instanceId);
+ public native long[] nativeGetRenderFinishTime(String instanceId);
private native void nativeSetDefaultHeightAndWidthIntoRootDom(String instanceId, float defaultWidth, float defaultHeight, boolean isWidthWrapContent, boolean isHeightWrapContent);
@@ -171,11 +169,6 @@ public class WXBridge implements IWXBridge {
@Override
public int callNative(String instanceId, String tasks, String callback) {
- long start = System.currentTimeMillis();
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- instance.firstScreenCreateInstanceTime(start);
- }
int errorCode = IWXBridge.INSTANCE_RENDERING;
try {
errorCode = WXBridgeManager.getInstance().callNative(instanceId, tasks, callback);
@@ -183,9 +176,6 @@ public class WXBridge implements IWXBridge {
WXLogUtils.e(TAG, "callNative throw exception:" + e.getMessage());
}
- if (instance != null) {
- instance.callNativeTime(System.currentTimeMillis() - start);
- }
if (WXEnvironment.isApkDebugable()) {
if (errorCode == IWXBridge.DESTROY_INSTANCE) {
WXLogUtils.w("destroyInstance :" + instanceId + " JSF must stop callNative");
@@ -251,12 +241,6 @@ public class WXBridge implements IWXBridge {
@Override
public int callUpdateFinish(String instanceId, byte[] tasks, String callback) {
-
- long start = System.currentTimeMillis();
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- instance.firstScreenCreateInstanceTime(start);
- }
int errorCode = IWXBridge.INSTANCE_RENDERING;
try {
errorCode = WXBridgeManager.getInstance().callUpdateFinish(instanceId, callback);
@@ -266,19 +250,11 @@ public class WXBridge implements IWXBridge {
WXLogUtils.e(TAG, "callCreateBody throw exception:" + e.getMessage());
}
}
- if (instance != null) {
- instance.callNativeTime(System.currentTimeMillis() - start);
- }
return errorCode;
}
@Override
public int callRefreshFinish(String instanceId, byte[] tasks, String callback) {
- long start = System.currentTimeMillis();
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- instance.firstScreenCreateInstanceTime(start);
- }
int errorCode = IWXBridge.INSTANCE_RENDERING;
try {
errorCode = WXBridgeManager.getInstance().callRefreshFinish(instanceId, callback);
@@ -288,9 +264,6 @@ public class WXBridge implements IWXBridge {
WXLogUtils.e(TAG, "callCreateFinish throw exception:" + e.getMessage());
}
}
- if (instance != null) {
- instance.callNativeTime(System.currentTimeMillis() - start);
- }
return errorCode;
}
@@ -349,11 +322,6 @@ public class WXBridge implements IWXBridge {
@Override
public int callRemoveElement(String instanceId, String ref) {
- long start = System.currentTimeMillis();
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- instance.firstScreenCreateInstanceTime(start);
- }
int errorCode = IWXBridge.INSTANCE_RENDERING;
try {
errorCode = WXBridgeManager.getInstance().callRemoveElement(instanceId, ref);
@@ -362,19 +330,11 @@ public class WXBridge implements IWXBridge {
WXLogUtils.e(TAG, "callRemoveElement throw exception:" + e.getMessage());
}
}
- if (instance != null) {
- instance.callNativeTime(System.currentTimeMillis() - start);
- }
return errorCode;
}
@Override
public int callMoveElement(String instanceId, String ref, String parentref, int index) {
- long start = System.currentTimeMillis();
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- instance.firstScreenCreateInstanceTime(start);
- }
int errorCode = IWXBridge.INSTANCE_RENDERING;
try {
errorCode = WXBridgeManager.getInstance().callMoveElement(instanceId, ref, parentref, index);
@@ -383,19 +343,11 @@ public class WXBridge implements IWXBridge {
WXLogUtils.e(TAG, "callMoveElement throw exception:" + e.getMessage());
}
}
- if (instance != null) {
- instance.callNativeTime(System.currentTimeMillis() - start);
- }
return errorCode;
}
@Override
public int callAddEvent(String instanceId, String ref, String event) {
- long start = System.currentTimeMillis();
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- instance.firstScreenCreateInstanceTime(start);
- }
int errorCode = IWXBridge.INSTANCE_RENDERING;
try {
errorCode = WXBridgeManager.getInstance().callAddEvent(instanceId, ref, event);
@@ -405,19 +357,11 @@ public class WXBridge implements IWXBridge {
WXLogUtils.e(TAG, "callAddEvent throw exception:" + e.getMessage());
// }
}
- if (instance != null) {
- instance.callNativeTime(System.currentTimeMillis() - start);
- }
return errorCode;
}
@Override
public int callRemoveEvent(String instanceId, String ref, String event) {
- long start = System.currentTimeMillis();
- WXSDKInstance instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
- if (instance != null) {
- instance.firstScreenCreateInstanceTime(start);
- }
int errorCode = IWXBridge.INSTANCE_RENDERING;
try {
errorCode = WXBridgeManager.getInstance().callRemoveEvent(instanceId, ref, event);
@@ -427,9 +371,6 @@ public class WXBridge implements IWXBridge {
WXLogUtils.e(TAG, "callRemoveEvent throw exception:" + e.getMessage());
}
}
- if (instance != null) {
- instance.callNativeTime(System.currentTimeMillis() - start);
- }
return errorCode;
}
@@ -530,13 +471,13 @@ public class WXBridge implements IWXBridge {
}
@Override
- public int printFirstScreenRenderTime(String instanceId) {
- return nativePrintFirstScreenRenderTime(instanceId);
+ public long[] getFirstScreenRenderTime(String instanceId) {
+ return nativeGetFirstScreenRenderTime(instanceId);
}
@Override
- public int printRenderFinishTime(String instanceId) {
- return nativePrintRenderFinishTime(instanceId);
+ public long[] getRenderFinishTime(String instanceId) {
+ return nativeGetRenderFinishTime(instanceId);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index 560358d..93bf0b8 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -577,15 +577,10 @@ public class WXBridgeManager implements Callback, BactchExecutor {
}
- long start = System.currentTimeMillis();
long parseNanos = System.nanoTime();
JSONArray array = JSON.parseArray(tasks);
parseNanos = System.nanoTime() - parseNanos;
- if (WXSDKManager.getInstance().getSDKInstance(instanceId) != null) {
- WXSDKManager.getInstance().getSDKInstance(instanceId).jsonParseTime(System.currentTimeMillis() - start);
- }
-
if (null != array && array.size() > 0) {
int size = array.size();
try {
@@ -2279,7 +2274,6 @@ public class WXBridgeManager implements Callback, BactchExecutor {
WXLogUtils.getStackTrace(e), null);
}
- WXSDKManager.getInstance().getSDKInstance(pageId).callCreateBodyTime(System.currentTimeMillis() - start);
return IWXBridge.INSTANCE_RENDERING;
}
@@ -2328,7 +2322,6 @@ public class WXBridgeManager implements Callback, BactchExecutor {
WXLogUtils.getStackTrace(e), null);
}
- WXSDKManager.getInstance().getSDKInstance(pageId).callAddElementTime(System.currentTimeMillis() - start);
return IWXBridge.INSTANCE_RENDERING;
}
@@ -2569,7 +2562,6 @@ public class WXBridgeManager implements Callback, BactchExecutor {
WXLogUtils.getStackTrace(e), null);
}
- WXSDKManager.getInstance().getSDKInstance(pageId).callLayoutTime(System.currentTimeMillis() - start);
return IWXBridge.INSTANCE_RENDERING;
}
@@ -2681,12 +2673,12 @@ public class WXBridgeManager implements Callback, BactchExecutor {
mWXBridge.setStyleHeight(instanceId, ref, value);
}
- public int printFirstScreenRenderTime(String instanceId) {
- return mWXBridge.printFirstScreenRenderTime(instanceId);
+ public long[] getFirstScreenRenderTime(String instanceId) {
+ return mWXBridge.getFirstScreenRenderTime(instanceId);
}
- public int printRenderFinishTime(String instanceId) {
- return mWXBridge.printRenderFinishTime(instanceId);
+ public long[] getRenderFinishTime(String instanceId) {
+ return mWXBridge.getRenderFinishTime(instanceId);
}
public void setViewPortWidth(String instanceId, float value) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
index 35f6bf1..725f32b 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
@@ -120,11 +120,11 @@ public interface IWXBridge extends IWXObject {
void reportServerCrash(String instanceId, String crashFile);
- public int callCreateBody(String instanceId, String componentType, String ref,
+ int callCreateBody(String instanceId, String componentType, String ref,
HashMap<String, String> styles, HashMap<String, String> attributes, HashSet<String> events,
float[] margins, float[] paddings, float[] borders);
- public int callAddElement(String instanceId, String componentType, String ref, int index, String parentRef,
+ int callAddElement(String instanceId, String componentType, String ref, int index, String parentRef,
HashMap<String, String> styles, HashMap<String, String> attributes, HashSet<String> events,
float[] margins, float[] paddings, float[] borders, boolean willLayout);
@@ -136,7 +136,7 @@ public interface IWXBridge extends IWXObject {
int callRemoveEvent(String instanceId, String ref, String event);
- public int callUpdateStyle(String instanceId, String ref,
+ int callUpdateStyle(String instanceId, String ref,
HashMap<String, Object> styles,
HashMap<String, String> paddings,
HashMap<String, String> margins,
@@ -159,9 +159,9 @@ public interface IWXBridge extends IWXObject {
void setRenderContainerWrapContent(boolean wrap, String instanceId);
- int printFirstScreenRenderTime(String instanceId);
+ long[] getFirstScreenRenderTime(String instanceId);
- int printRenderFinishTime(String instanceId);
+ long[] getRenderFinishTime(String instanceId);
void setDefaultHeightAndWidthIntoRootDom(String instanceId, float defaultWidth, float defaultHeight, boolean isWidthWrapContent, boolean isHeightWrapContent);
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java b/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java
index 0b25c55..d058236 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/WXPerformance.java
@@ -94,6 +94,10 @@ public class WXPerformance {
measureTime4(0D, Double.MAX_VALUE),
measureTime5(0D, Double.MAX_VALUE),
+ callBridgeTime(0D, Double.MAX_VALUE),
+ cssLayoutTime(0D, Double.MAX_VALUE),
+ parseJsonTime(0D, Double.MAX_VALUE),
+
communicateTime(0D, 5000D),
screenRenderTime(0D, 5000D),
totalTime(0D, 5000D),
@@ -234,7 +238,7 @@ public class WXPerformance {
/**
* Call native Time spent when rendering first screen
*/
- public long callNativeTime;
+ public long callBridgeTime;
/**
* Create Instance Time spent when rendering first screen
@@ -244,25 +248,9 @@ public class WXPerformance {
/**
* Call native Time spent when rendering first screen
*/
- public long batchTime;
-
- /**
- * Call native Time spent when rendering first screen
- */
public long parseJsonTime;
/**
- * UpdateDomObj Time spent when rendering first screen
- */
- public long updateDomObjTime;
-
- /**
- * ApplyUpdate Time spent when rendering first screen
- */
- public long applyUpdateTime;
-
-
- /**
* CssLayout Time spent when rendering first screen
*/
public long cssLayoutTime;
@@ -362,28 +350,9 @@ public class WXPerformance {
/**
* RenderAction
*/
- public int mCallCreateBodySumTime = 0;
- public int mCallAddElementSumTime = 0;
-
- public int mCallLayoutSumTime = 0;
- public int mCallLayoutUpdateDemissionSumTime = 0;
- public int mCallLayoutApplyLayoutAndEventSumTime = 0;
- public int mCallLayoutBindDataSumTime = 0;
-
- public int mActionTotalSumTime = 0;
- public int mActionLayoutCount = 0;
- public int mActionLayoutSumTime = 0;
-
public int mActionAddElementCount = 0;
public int mActionAddElementSumTime = 0;
- public int mActionCreateBodyCount = 0;
- public int mActionCreateBodySumTime = 0;
-
- public int mActionOtherCount = 0;
- public int mActionOtherSumTime = 0;
-
-
public WXPerformance(){
mErrMsgBuilder=new StringBuilder();
}
@@ -438,6 +407,10 @@ public class WXPerformance {
quotas.put(Measure.imgSizeCount.toString(), wrongImgSizeCount);
quotas.put(Measure.interactionTime.toString(), (double) interactionTime);
+ quotas.put(Measure.callBridgeTime.toString(), (double) callBridgeTime);
+ quotas.put(Measure.cssLayoutTime.toString(), (double) cssLayoutTime);
+ quotas.put(Measure.parseJsonTime.toString(), (double) parseJsonTime);
+
// TODO the following attribute is no longer needed and will be deleted soon.
quotas.put(Measure.screenRenderTime.toString(), (double) screenRenderTime);
quotas.put(Measure.communicateTime.toString(), (double) communicateTime);
@@ -558,12 +531,4 @@ public class WXPerformance {
public void afterInstanceDestroy(String instanceId) {
}
-
- public int renderSumTime() {
- return mActionAddElementSumTime + mActionCreateBodySumTime + mActionLayoutSumTime + mActionOtherSumTime;
- }
-
- public int renderSumCount() {
- return mActionAddElementCount + mActionCreateBodyCount + mActionLayoutCount + mActionOtherCount;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAbstractAddElement.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAbstractAddElement.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAbstractAddElement.java
index 8846f4e..3a9848d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAbstractAddElement.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAbstractAddElement.java
@@ -40,9 +40,11 @@ public abstract class GraphicActionAbstractAddElement extends BasicGraphicAction
protected float[] mMargins;
protected float[] mPaddings;
protected float[] mBorders;
+ private long startTime;
public GraphicActionAbstractAddElement(String pageId, String ref) {
super(pageId, ref);
+ startTime = System.currentTimeMillis();
}
protected WXComponent createComponent(WXSDKInstance instance, WXVContainer parent, BasicComponentData basicComponentData) {
@@ -69,6 +71,11 @@ public abstract class GraphicActionAbstractAddElement extends BasicGraphicAction
return component;
}
+ @Override
+ public void executeAction() {
+ WXSDKManager.getInstance().getSDKInstance(getPageId()).callActionAddElementTime(System.currentTimeMillis() - startTime);
+ }
+
public String getComponentType() {
return mComponentType;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java
index 77bb5e2..6bdb0b7 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionAddElement.java
@@ -109,20 +109,17 @@ public class GraphicActionAddElement extends GraphicActionAbstractAddElement {
@Override
public void executeAction() {
+ super.executeAction();
try {
parent.addChild(child, mIndex);
parent.createChildViewAt(mIndex);
- long start = System.currentTimeMillis();
if(layoutPosition !=null && layoutSize != null) {
child.setDemission(layoutSize, layoutPosition);
}
child.applyLayoutAndEvent(child);
- WXSDKManager.getInstance().getSDKInstance(getPageId()).callLayoutaAplyLayoutAndEventTime(System.currentTimeMillis() - start);
- start = System.currentTimeMillis();
child.bindData(child);
- WXSDKManager.getInstance().getSDKInstance(getPageId()).callLayoutBindDataCoreTime(System.currentTimeMillis() - start);
} catch (Exception e) {
WXLogUtils.e("add component failed.", e);
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
index f59b0e1..0d99623 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionCreateBody.java
@@ -69,16 +69,11 @@ public class GraphicActionCreateBody extends GraphicActionAbstractAddElement {
@Override
public void executeAction() {
+ super.executeAction();
try {
component.createView();
-
- long start = System.currentTimeMillis();
component.applyLayoutAndEvent(component);
- WXSDKManager.getInstance().getSDKInstance(getPageId()).callLayoutaAplyLayoutAndEventTime(System.currentTimeMillis() - start);
-
- start = System.currentTimeMillis();
component.bindData(component);
- WXSDKManager.getInstance().getSDKInstance(getPageId()).callLayoutBindDataCoreTime(System.currentTimeMillis() - start);
if (component instanceof WXScroller) {
WXScroller scroller = (WXScroller) component;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionLayout.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionLayout.java b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionLayout.java
index 693096a..3ebdd16 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionLayout.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/action/GraphicActionLayout.java
@@ -39,13 +39,8 @@ public class GraphicActionLayout extends BasicGraphicAction {
return;
}
- long start = System.currentTimeMillis();
component.setDemission(mLayoutSize, mLayoutPosition);
- WXSDKManager.getInstance().getSDKInstance(getPageId()).callLayoutUpdateDemissionTime(System.currentTimeMillis() - start);
-
component.setLayout(component);
component.setPadding(component.getPadding(), component.getBorder());
-
- WXSDKManager.getInstance().getSDKInstance(getPageId()).callActionLayoutCount();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
index 27a4b92..58fcdcf 100644
--- a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
@@ -142,6 +142,7 @@ namespace WeexCore {
}
void Bridge_Impl_Android::setJSVersion(const char* version) {
+
JNIEnv *env = getJNIEnv();
jstring jVersion = env->NewStringUTF(version);
@@ -154,9 +155,15 @@ namespace WeexCore {
if (jVersion != nullptr)
env->DeleteLocalRef(jVersion);
+
+
}
void Bridge_Impl_Android::reportException(const char* pageId, const char *func, const char *exception_string) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jFunc = env->NewStringUTF(func);
jstring jExceptionString = env->NewStringUTF(exception_string);
@@ -175,9 +182,16 @@ namespace WeexCore {
env->DeleteLocalRef(jFunc);
if (jExceptionString != nullptr)
env->DeleteLocalRef(jExceptionString);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
}
int Bridge_Impl_Android::callNative(const char* pageId, const char *task, const char *callback) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jbyteArray jTask = newJByteArray(env, task);
jstring jCallback = env->NewStringUTF(callback);
@@ -205,11 +219,17 @@ namespace WeexCore {
env->DeleteLocalRef(jTask);
if (jCallback != nullptr)
env->DeleteLocalRef(jCallback);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
jobject Bridge_Impl_Android::callNativeModule(const char* pageId, const char *module, const char *method,
const char *argString, const char *optString) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jModule = env->NewStringUTF(module);
jstring jMethod = env->NewStringUTF(method);
@@ -239,12 +259,18 @@ namespace WeexCore {
env->DeleteLocalRef(jArgString);
if (jOptString != nullptr)
env->DeleteLocalRef(jOptString);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return result;
}
void Bridge_Impl_Android::callNativeComponent(const char* pageId, const char* ref,
const char *method, const char *argString,
const char *optString) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jMethod = env->NewStringUTF(method);
jbyteArray jArgString = newJByteArray(env, argString);
@@ -271,6 +297,9 @@ namespace WeexCore {
env->DeleteLocalRef(jArgString);
if (jOptString != nullptr)
env->DeleteLocalRef(jOptString);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
}
void Bridge_Impl_Android::setTimeout(const char* callbackID, const char* time) {
@@ -313,6 +342,10 @@ namespace WeexCore {
}
int Bridge_Impl_Android::callUpdateFinish(const char* pageId, const char *task, const char *callback) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jbyteArray jTask = newJByteArray(env, task);
jstring jCallback = env->NewStringUTF(callback);
@@ -336,10 +369,17 @@ namespace WeexCore {
env->DeleteLocalRef(jTask);
if (jCallback != nullptr)
env->DeleteLocalRef(jCallback);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callRefreshFinish(const char* pageId, const char *task, const char *callback) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jbyteArray jTask = newJByteArray(env, task);
jstring jCallback = env->NewStringUTF(callback);
@@ -362,6 +402,9 @@ namespace WeexCore {
env->DeleteLocalRef(jTask);
if (jCallback != nullptr)
env->DeleteLocalRef(jCallback);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
@@ -372,16 +415,13 @@ namespace WeexCore {
const WXCoreMargin &margins,
const WXCorePadding &paddings,
const WXCoreBorderWidth &borders) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
- RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
- if (page == nullptr)
- return -1;
-
- long long startTime = getCurrentTime();
-
if (jMapConstructorMethodId == NULL)
jMapConstructorMethodId = env->GetMethodID(jMapClazz, "<init>", "()V");
if (jMapPutMethodId == NULL)
@@ -401,8 +441,6 @@ namespace WeexCore {
cpyCMap2JMap(attributes, jAttributes, env);
cpyCSet2JSet(events, jEvents, env);
- page->CreateJMapJNITime(getCurrentTime() - startTime);
-
float c_margins[4];
float c_paddings[4];
float c_borders[4];
@@ -428,8 +466,6 @@ namespace WeexCore {
c_borders[3] = borders.getBorderWidth(kBorderWidthRight);
env->SetFloatArrayRegion(jBorders, 0, 4, c_borders);
- long long startTimeCallBridge = getCurrentTime();
-
if (jCallCreateBodyMethodId == NULL)
jCallCreateBodyMethodId = env->GetMethodID(jBridgeClazz,
"callCreateBody",
@@ -446,8 +482,6 @@ namespace WeexCore {
jComponentType, jRef, jStyles, jAttributes,
jEvents, jMargins, jPaddings, jBorders);
- page->CallBridgeTime(getCurrentTime() - startTimeCallBridge);
-
if (flag == -1) {
LOGE("instance destroy JFM must stop callCreateBody");
}
@@ -462,6 +496,9 @@ namespace WeexCore {
env->DeleteLocalRef(jMargins);
env->DeleteLocalRef(jPaddings);
env->DeleteLocalRef(jBorders);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
@@ -474,17 +511,12 @@ namespace WeexCore {
const WXCorePadding &paddings,
const WXCoreBorderWidth &borders,
bool willLayout) {
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
jstring jParentRef = env->NewStringUTF(parentRef);
- RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
- if (page == nullptr)
- return -1;
-
- long long startTime = getCurrentTime();
-
if (jMapConstructorMethodId == NULL)
jMapConstructorMethodId = env->GetMethodID(jMapClazz, "<init>", "()V");
if (jMapPutMethodId == NULL)
@@ -504,8 +536,6 @@ namespace WeexCore {
cpyCMap2JMap(attributes, jAttributes, env);
cpyCSet2JSet(events, jEvents, env);
- page->CreateJMapJNITime(getCurrentTime() - startTime);
-
float c_margins[4];
float c_paddings[4];
float c_borders[4];
@@ -531,8 +561,6 @@ namespace WeexCore {
c_borders[3] = borders.getBorderWidth(kBorderWidthRight);
env->SetFloatArrayRegion(jBorders, 0, 4, c_borders);
- long long startTimeCallBridge = getCurrentTime();
-
if (jCallAddElementMethodId == NULL)
jCallAddElementMethodId = env->GetMethodID(jBridgeClazz,
"callAddElement",
@@ -547,8 +575,6 @@ namespace WeexCore {
flag = env->CallIntMethod(jThis, jCallAddElementMethodId, jPageId, jComponentType, jRef, index,
jParentRef, jStyles, jAttributes, jEvents, jMargins, jPaddings, jBorders, willLayout);
- page->CallBridgeTime(getCurrentTime() - startTimeCallBridge);
-
if (flag == -1) {
LOGE("instance destroy JFM must stop callAddElement");
}
@@ -565,10 +591,17 @@ namespace WeexCore {
env->DeleteLocalRef(jMargins);
env->DeleteLocalRef(jPaddings);
env->DeleteLocalRef(jBorders);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callRemoveElement(const char* pageId, const char* ref) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
@@ -588,10 +621,17 @@ namespace WeexCore {
env->DeleteLocalRef(jPageId);
if (jRef != nullptr)
env->DeleteLocalRef(jRef);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return 0;
}
int Bridge_Impl_Android::callMoveElement(const char* pageId, const char* ref, const char* parentRef, int index) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
@@ -614,10 +654,17 @@ namespace WeexCore {
env->DeleteLocalRef(jRef);
if (jParentRef != nullptr)
env->DeleteLocalRef(jParentRef);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return 0;
}
int Bridge_Impl_Android::callAddEvent(const char* pageId, const char* ref, const char *event) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
@@ -639,10 +686,17 @@ namespace WeexCore {
if (jRef != nullptr)
env->DeleteLocalRef(jRef);
env->DeleteLocalRef(jEventId);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callRemoveEvent(const char* pageId, const char* ref, const char *event) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
@@ -664,6 +718,9 @@ namespace WeexCore {
if (jRef != nullptr)
env->DeleteLocalRef(jRef);
env->DeleteLocalRef(jEventId);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
@@ -672,16 +729,13 @@ namespace WeexCore {
std::vector<std::pair<std::string, std::string>> *margin,
std::vector<std::pair<std::string, std::string>> *padding,
std::vector<std::pair<std::string, std::string>> *border) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
- RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
- if (page == nullptr)
- return -1;
-
- long long startTime = getCurrentTime();
-
if (jMapConstructorMethodId == NULL)
jMapConstructorMethodId = env->GetMethodID(jMapClazz, "<init>", "()V");
if (jMapPutMethodId == NULL)
@@ -709,10 +763,6 @@ namespace WeexCore {
cpyCVector2JMap(border, jBorders, env);
}
- page->CreateJMapJNITime(getCurrentTime() - startTime);
-
- long long startTimeCallBridge = getCurrentTime();
-
if (jCallUpdateStyleMethodId == NULL)
jCallUpdateStyleMethodId = env->GetMethodID(jBridgeClazz,
"callUpdateStyle",
@@ -721,8 +771,6 @@ namespace WeexCore {
int flag = 0;
flag = env->CallIntMethod(jThis, jCallUpdateStyleMethodId, jPageId, jRef, jStyles, jMargins, jPaddings, jBorders);
- page->CallBridgeTime(getCurrentTime() - startTimeCallBridge);
-
if (flag == -1) {
LOGE("instance destroy JFM must stop callUpdateStyle");
}
@@ -735,20 +783,21 @@ namespace WeexCore {
env->DeleteLocalRef(jMargins);
env->DeleteLocalRef(jPaddings);
env->DeleteLocalRef(jBorders);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callUpdateAttr(const char* pageId, const char* ref, std::vector<std::pair<std::string, std::string>> *attrs) {
- JNIEnv *env = getJNIEnv();
- jstring jPageId = env->NewStringUTF(pageId);
- jstring jRef = env->NewStringUTF(ref);
RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
- if (page == nullptr)
- return -1;
-
long long startTime = getCurrentTime();
+ JNIEnv *env = getJNIEnv();
+ jstring jPageId = env->NewStringUTF(pageId);
+ jstring jRef = env->NewStringUTF(ref);
+
if (jMapConstructorMethodId == NULL)
jMapConstructorMethodId = env->GetMethodID(jMapClazz, "<init>", "()V");
if (jMapPutMethodId == NULL)
@@ -761,10 +810,6 @@ namespace WeexCore {
cpyCVector2JMap(attrs, jAttrs, env);
}
- page->CreateJMapJNITime(getCurrentTime() - startTime);
-
- long long startTimeCallBridge = getCurrentTime();
-
if (jCallUpdateAttrsMethodId == NULL) {
jCallUpdateAttrsMethodId = env->GetMethodID(jBridgeClazz,
"callUpdateAttrs",
@@ -774,8 +819,6 @@ namespace WeexCore {
int flag = 0;
flag = env->CallIntMethod(jThis, jCallUpdateAttrsMethodId, jPageId, jRef, jAttrs);
- page->CallBridgeTime(getCurrentTime() - startTimeCallBridge);
-
if (flag == -1) {
LOGE("instance destroy JFM must stop callUpdateStyle");
}
@@ -785,21 +828,22 @@ namespace WeexCore {
if (jRef != nullptr)
env->DeleteLocalRef(jRef);
env->DeleteLocalRef(jAttrs);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callLayout(const char* pageId, const char* ref,
int top, int bottom, int left, int right,
int height, int width, int index) {
- JNIEnv *env = getJNIEnv();
- jstring jPageId = env->NewStringUTF(pageId);
- jstring jRef = env->NewStringUTF(ref);
RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
- if (page == nullptr)
- return -1;
+ long long startTime = getCurrentTime();
- long long startTimeCallBridge = getCurrentTime();
+ JNIEnv *env = getJNIEnv();
+ jstring jPageId = env->NewStringUTF(pageId);
+ jstring jRef = env->NewStringUTF(ref);
if (jCallLayoutMethodId == NULL)
jCallLayoutMethodId = env->GetMethodID(jBridgeClazz,
@@ -810,8 +854,6 @@ namespace WeexCore {
flag = env->CallIntMethod(jThis, jCallLayoutMethodId, jPageId,
jRef, top, bottom, left, right, height, width, index);
- page->CallBridgeTime(getCurrentTime() - startTimeCallBridge);
-
if (flag == -1) {
LOGE("instance destroy JFM must stop callLayout");
}
@@ -820,18 +862,19 @@ namespace WeexCore {
env->DeleteLocalRef(jPageId);
if (jRef != nullptr)
env->DeleteLocalRef(jRef);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callCreateFinish(const char* pageId) {
- JNIEnv *env = getJNIEnv();
- jstring jPageId = env->NewStringUTF(pageId);
RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
- if (page == nullptr)
- return -1;
+ long long startTime = getCurrentTime();
- long long startTimeCallBridge = getCurrentTime();
+ JNIEnv *env = getJNIEnv();
+ jstring jPageId = env->NewStringUTF(pageId);
if (jCallCreateFinishMethodId == NULL)
jCallCreateFinishMethodId = env->GetMethodID(jBridgeClazz,
@@ -840,18 +883,23 @@ namespace WeexCore {
int flag = env->CallIntMethod(jThis, jCallCreateFinishMethodId, jPageId);
- page->CallBridgeTime(getCurrentTime() - startTimeCallBridge);
-
if (flag == -1) {
LOGE("instance destroy JFM must stop callCreateFinish");
}
if (jPageId != nullptr)
env->DeleteLocalRef(jPageId);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callAppendTreeCreateFinish(const char *pageId, const char *ref) {
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
+ long long startTime = getCurrentTime();
+
JNIEnv *env = getJNIEnv();
jstring jPageId = env->NewStringUTF(pageId);
jstring jRef = env->NewStringUTF(ref);
@@ -872,20 +920,21 @@ namespace WeexCore {
env->DeleteLocalRef(jPageId);
if (jRef != nullptr)
env->DeleteLocalRef(jRef);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
int Bridge_Impl_Android::callHasTransitionPros(const char* pageId, const char* ref, std::vector<std::pair<std::string, std::string>> *style) {
- JNIEnv *env = getJNIEnv();
- jstring jPageId = env->NewStringUTF(pageId);
- jstring jRef = env->NewStringUTF(ref);
RenderPage *page = RenderManager::GetInstance()->GetPage(pageId);
- if (page == nullptr)
- return -1;
-
long long startTime = getCurrentTime();
+ JNIEnv *env = getJNIEnv();
+ jstring jPageId = env->NewStringUTF(pageId);
+ jstring jRef = env->NewStringUTF(ref);
+
if (jMapConstructorMethodId == NULL)
jMapConstructorMethodId = env->GetMethodID(jMapClazz, "<init>", "()V");
if (jMapPutMethodId == NULL)
@@ -898,10 +947,6 @@ namespace WeexCore {
cpyCVector2JMap(style, jStyles, env);
}
- page->CreateJMapJNITime(getCurrentTime() - startTime);
-
- long long startTimeCallBridge = getCurrentTime();
-
if (jCallHasTransitionProsMethodId == NULL)
jCallHasTransitionProsMethodId = env->GetMethodID(jBridgeClazz,
"callHasTransitionPros",
@@ -909,13 +954,15 @@ namespace WeexCore {
int flag = 0;
flag = env->CallIntMethod(jThis, jCallHasTransitionProsMethodId, jPageId, jRef, jStyles);
- page->CallBridgeTime(getCurrentTime() - startTimeCallBridge);
if (jPageId != nullptr)
env->DeleteLocalRef(jPageId);
if (jRef != nullptr)
env->DeleteLocalRef(jRef);
env->DeleteLocalRef(jStyles);
+
+ if (page != nullptr)
+ page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
index d5dcd10..d7bc154 100644
--- a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
@@ -151,20 +151,96 @@ static void SetRenderContainerWrapContent(JNIEnv* env, jobject jcaller, jboolean
page->SetRenderContainerWidthWrapContent(wrap);
}
-static jint PrintFirstScreenRenderTime(JNIEnv *env, jobject jcaller, jstring instanceId) {
+static jlongArray GetFirstScreenRenderTime(JNIEnv *env, jobject jcaller, jstring instanceId) {
+ jlongArray jRet = env->NewLongArray(3);
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
+ if (page == nullptr)
+ return jRet;
+
+ std::vector<long> temp = page->PrintFirstScreenLog();
+
+ jlong ret[3];
+
+ ret[0] = temp[0];
+ ret[1] = temp[1];
+ ret[2] = temp[2];
+ env->SetLongArrayRegion(jRet, 0, 3, ret);
+
+ return jRet;
+}
+
+static jlongArray GetRenderFinishTime(JNIEnv *env, jobject jcaller, jstring instanceId) {
+ jlongArray jRet = env->NewLongArray(3);
+
+ RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
+ if (page == nullptr)
+ return 0;
+
+ std::vector<long> temp = page->PrintRenderSuccessLog();
+
+ jlong ret[3];
+
+ ret[0] = temp[0];
+ ret[1] = temp[1];
+ ret[2] = temp[2];
+ env->SetLongArrayRegion(jRet, 0, 3, ret);
+
+ return jRet;
+}
+
+static jlong GetFirstScreenCallBridgeTime(JNIEnv* env, jobject jcaller,
+ jstring instanceId) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
+ if (page == nullptr)
+ return 0;
+
+ return page->GetFirstScreenCallBridgeTime();
+}
+
+static jlong GetFirstScreenCssLayoutTime(JNIEnv* env, jobject jcaller,
+ jstring instanceId) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
+ if (page == nullptr)
+ return 0;
+
+ return page->GetFirstScreenCssLayoutTime();
+}
+
+static jlong GetFirstScreenParseJsonTime(JNIEnv* env, jobject jcaller,
+ jstring instanceId) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
+ if (page == nullptr)
+ return 0;
+
+ return page->GetFirstScreenParseJsonTime();
+}
+
+static jlong GetOnRenderSuccessCallBridgeTime(JNIEnv* env, jobject jcaller,
+ jstring instanceId) {
+ RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
+ if (page == nullptr)
+ return 0;
+
+ return page->GetOnRenderSuccessCallBridgeTime();
+}
+
+static jlong GetOnRenderSuccessCssLayoutTime(JNIEnv* env, jobject jcaller,
+ jstring instanceId) {
RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
if (page == nullptr)
return 0;
- return page->PrintFirstScreenLog();
+ return page->GetOnRenderSuccessCssLayoutTime();
}
-static jint PrintRenderFinishTime(JNIEnv *env, jobject jcaller, jstring instanceId) {
+static jlong GetOnRenderSuccessParseJsonTime(JNIEnv* env, jobject jcaller,
+ jstring instanceId) {
RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
if (page == nullptr)
return 0;
- return page->PrintRenderSuccessLog();
+ return page->GetOnRenderSuccessParseJsonTime();
}
//Notice that this method is invoked from main thread.
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h b/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
index 201799f..e89ad36 100644
--- a/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
+++ b/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
@@ -81,10 +81,10 @@ static void SetRenderContainerWrapContent(JNIEnv* env, jobject jcaller,
jboolean wrap,
jstring instanceId);
-static jint PrintFirstScreenRenderTime(JNIEnv* env, jobject jcaller,
+static jlongArray GetFirstScreenRenderTime(JNIEnv* env, jobject jcaller,
jstring instanceId);
-static jint PrintRenderFinishTime(JNIEnv* env, jobject jcaller,
+static jlongArray GetRenderFinishTime(JNIEnv* env, jobject jcaller,
jstring instanceId);
static void SetDefaultHeightAndWidthIntoRootDom(JNIEnv* env, jobject jcaller,
@@ -234,16 +234,16 @@ static const JNINativeMethod kMethodsWXBridge[] = {
"Ljava/lang/String;"
")"
"V", reinterpret_cast<void*>(SetRenderContainerWrapContent) },
- { "nativePrintFirstScreenRenderTime",
+ { "nativeGetFirstScreenRenderTime",
"("
"Ljava/lang/String;"
")"
-"I", reinterpret_cast<void*>(PrintFirstScreenRenderTime) },
- { "nativePrintRenderFinishTime",
+"[J", reinterpret_cast<void*>(GetFirstScreenRenderTime) },
+ { "nativeGetRenderFinishTime",
"("
"Ljava/lang/String;"
")"
-"I", reinterpret_cast<void*>(PrintRenderFinishTime) },
+"[J", reinterpret_cast<void*>(GetRenderFinishTime) },
{ "nativeSetDefaultHeightAndWidthIntoRootDom",
"("
"Ljava/lang/String;"
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/moniter/render_performance.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/moniter/render_performance.cpp b/weex_core/Source/core/moniter/render_performance.cpp
index a966aeb..4fe594b 100644
--- a/weex_core/Source/core/moniter/render_performance.cpp
+++ b/weex_core/Source/core/moniter/render_performance.cpp
@@ -17,34 +17,29 @@
* under the License.
*/
#include "render_performance.h"
-#include <android/base/log_utils.h>
namespace WeexCore {
- int
- RenderPerformance::PrintPerformanceLogImplAndroid(const PerformanceStage &performanceStage) {
+ std::vector<long> RenderPerformance::PrintPerformanceLog(PerformanceStage performanceStage) {
-#if PERFORMANCE_LOG
+ std::vector<long> ret(3);
if (performanceStage == onFirstScreen) {
- LOGD("[WeexCore render time]onFirstScreen");
+ firstScreenCallBridgeTime = callBridgeTime;
+ firstScreenCssLayoutTime = cssLayoutTime;
+ firstScreenParseJsonTime = parseJsonTime;
+ ret[0] = firstScreenCallBridgeTime;
+ ret[1] = firstScreenCssLayoutTime;
+ ret[2] = firstScreenParseJsonTime;
} else {
- LOGD("[WeexCore render time]onRenderSuccess");
+ onRenderSuccessCallBridgeTime = callBridgeTime;
+ onRenderSuccessCssLayoutTime = cssLayoutTime;
+ onRenderSuccessParseJsonTime = parseJsonTime;
+ ret[0] = onRenderSuccessCallBridgeTime;
+ ret[1] = onRenderSuccessCssLayoutTime;
+ ret[2] = onRenderSuccessParseJsonTime;
}
- LOGD("[WeexCore render time] jniCallTime: %lld", jniCallTime);
- LOGD("[WeexCore render time] -addElementActionJNITime: %lld", addElementActionJNITime);
- LOGD("[WeexCore render time] layoutActionJNITime: %lld", layoutActionJniTime);
- LOGD("[WeexCore render time] -jniCallBridgeTime: %lld", jniCallBridgeTime);
- LOGD("[WeexCore render time] createJMapJNITime: %lld", createJMapJNITime);
- LOGD("[WeexCore render time] cssLayoutTime: %lld", cssLayoutTime);
- LOGD("[WeexCore render time] parseJsonTime: %lld", parseJsonTime);
- LOGD("[WeexCore render time] buildRenderObjectTime: %lld", buildRenderObjectTime);
-#endif
- return cssLayoutTime;
- }
-
- int RenderPerformance::PrintPerformanceLogImplIOS(const PerformanceStage &performanceStage) {
- return 0;
+ return ret;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/moniter/render_performance.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/moniter/render_performance.h b/weex_core/Source/core/moniter/render_performance.h
index 69e9928..f6c24ee 100644
--- a/weex_core/Source/core/moniter/render_performance.h
+++ b/weex_core/Source/core/moniter/render_performance.h
@@ -19,6 +19,8 @@
#ifndef WEEX_PROJECT_WXPERFORMANCE_H
#define WEEX_PROJECT_WXPERFORMANCE_H
+#include <vector>
+
namespace WeexCore {
typedef enum PerformanceStage {
@@ -29,40 +31,30 @@ namespace WeexCore {
public:
- long long jniCallTime;
-
- long long jniCallBridgeTime;
+ long long callBridgeTime;
long long cssLayoutTime;
- long long addElementActionJNITime;
-
- long long addEventActionJNITime;
-
- long long removeEventActionJNITime;
-
- long long layoutActionJniTime;
-
long long parseJsonTime;
- long long buildRenderObjectTime;
+ long long firstScreenCallBridgeTime;
+
+ long long firstScreenCssLayoutTime;
- long long createJMapJNITime;
+ long long firstScreenParseJsonTime;
- RenderPerformance() : jniCallTime(0), jniCallBridgeTime(0), cssLayoutTime(0),
- addElementActionJNITime(0),
- layoutActionJniTime(0), parseJsonTime(0), buildRenderObjectTime(0),
- createJMapJNITime(0) {}
+ long long onRenderSuccessCallBridgeTime;
- inline int PrintPerformanceLog(PerformanceStage performanceStage) {
- return PrintPerformanceLogImplAndroid(performanceStage);
- }
+ long long onRenderSuccessCssLayoutTime;
- private:
+ long long onRenderSuccessParseJsonTime;
- int PrintPerformanceLogImplAndroid(const PerformanceStage &performanceStage);
+ RenderPerformance() : callBridgeTime(0), cssLayoutTime(0), parseJsonTime(0),
+ firstScreenCallBridgeTime(0), firstScreenCssLayoutTime(0),
+ firstScreenParseJsonTime(0), onRenderSuccessCallBridgeTime(0),
+ onRenderSuccessCssLayoutTime(0), onRenderSuccessParseJsonTime(0) {}
- int PrintPerformanceLogImplIOS(const PerformanceStage &performanceStage);
+ std::vector<long> PrintPerformanceLog(PerformanceStage performanceStage);
};
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_add_element.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_add_element.cpp b/weex_core/Source/core/render/action/render_action_add_element.cpp
index fd039db..0ca77b6 100644
--- a/weex_core/Source/core/render/action/render_action_add_element.cpp
+++ b/weex_core/Source/core/render/action/render_action_add_element.cpp
@@ -37,16 +37,10 @@ namespace WeexCore {
}
void RenderActionAddElement::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callAddElement(mPageId.c_str(), mComponentType.c_str(), mRef.c_str(),
mIndex, mParentRef.c_str(), mStyles, mAttributes,
mEvents, mMargins, mPaddings, mBorders, mWillLayout);
page->JniCallTime(getCurrentTime() - startTime);
page->AddElementActionJNITime(getCurrentTime() - startTime);
}
-
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_add_event.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_add_event.cpp b/weex_core/Source/core/render/action/render_action_add_event.cpp
index 04129d8..460852a 100644
--- a/weex_core/Source/core/render/action/render_action_add_event.cpp
+++ b/weex_core/Source/core/render/action/render_action_add_event.cpp
@@ -27,16 +27,7 @@ namespace WeexCore {
}
void RenderActionAddEvent::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
-
Bridge_Impl_Android::getInstance()->callAddEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str());
-
- page->JniCallTime(getCurrentTime() - startTime);
- page->AddEventActionJNITime(getCurrentTime() - startTime);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_createbody.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_createbody.cpp b/weex_core/Source/core/render/action/render_action_createbody.cpp
index 4d77b30..6fe79ea 100644
--- a/weex_core/Source/core/render/action/render_action_createbody.cpp
+++ b/weex_core/Source/core/render/action/render_action_createbody.cpp
@@ -33,15 +33,8 @@ namespace WeexCore {
}
void RenderActionCreateBody::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callCreateBody(mPageId.c_str(), mComponentType.c_str(), mRef.c_str(),
mStyles, mAttributes, mEvents,
mMargins, mPaddings, mBorders);
- page->JniCallTime(getCurrentTime() - startTime);
- page->AddElementActionJNITime(getCurrentTime() - startTime);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_createfinish.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_createfinish.cpp b/weex_core/Source/core/render/action/render_action_createfinish.cpp
index f9163ca..b447603 100644
--- a/weex_core/Source/core/render/action/render_action_createfinish.cpp
+++ b/weex_core/Source/core/render/action/render_action_createfinish.cpp
@@ -25,13 +25,6 @@ namespace WeexCore {
}
void RenderActionCreateFinish::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callCreateFinish(mPageId.c_str());
-
- page->JniCallTime(getCurrentTime() - startTime);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_layout.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_layout.cpp b/weex_core/Source/core/render/action/render_action_layout.cpp
index 39a302e..70d244d 100644
--- a/weex_core/Source/core/render/action/render_action_layout.cpp
+++ b/weex_core/Source/core/render/action/render_action_layout.cpp
@@ -28,16 +28,9 @@ namespace WeexCore {
}
void RenderActionLayout::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callLayout(mPageId.c_str(), mRef.c_str(),
mTop, mBottom, mLeft, mRight,
mHeight, mWidth, index);
- page->JniCallTime(getCurrentTime() - startTime);
- page->LayoutActionJniTime(getCurrentTime() - startTime);
}
void RenderActionLayout::GetLayoutInfo(const WXCoreLayoutNode *node) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_move_element.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_move_element.cpp b/weex_core/Source/core/render/action/render_action_move_element.cpp
index 5501d78..f7081c8 100644
--- a/weex_core/Source/core/render/action/render_action_move_element.cpp
+++ b/weex_core/Source/core/render/action/render_action_move_element.cpp
@@ -29,12 +29,6 @@ namespace WeexCore {
}
void RenderActionMoveElement::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callMoveElement(mPageId.c_str(), mRef.c_str(), mParentRef.c_str(), mIndex);
- page->JniCallTime(getCurrentTime() - startTime);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_remove_element.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_remove_element.cpp b/weex_core/Source/core/render/action/render_action_remove_element.cpp
index 52abde8..ef33a36 100644
--- a/weex_core/Source/core/render/action/render_action_remove_element.cpp
+++ b/weex_core/Source/core/render/action/render_action_remove_element.cpp
@@ -26,12 +26,6 @@ namespace WeexCore {
}
void RenderActionRemoveElement::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callRemoveElement(mPageId.c_str(), mRef.c_str());
- page->JniCallTime(getCurrentTime() - startTime);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_remove_event.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_remove_event.cpp b/weex_core/Source/core/render/action/render_action_remove_event.cpp
index 3bbb15c..94bd61e 100644
--- a/weex_core/Source/core/render/action/render_action_remove_event.cpp
+++ b/weex_core/Source/core/render/action/render_action_remove_event.cpp
@@ -27,16 +27,7 @@ namespace WeexCore {
}
void RenderActionRemoveEvent::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
-
Bridge_Impl_Android::getInstance()->callRemoveEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str());
-
- page->JniCallTime(getCurrentTime() - startTime);
- page->RemoveEventActionJNITime(getCurrentTime() - startTime);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_update_attr.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_update_attr.cpp b/weex_core/Source/core/render/action/render_action_update_attr.cpp
index 99cb49f..082fc69 100644
--- a/weex_core/Source/core/render/action/render_action_update_attr.cpp
+++ b/weex_core/Source/core/render/action/render_action_update_attr.cpp
@@ -28,13 +28,6 @@ namespace WeexCore {
}
void RenderActionUpdateAttr::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callUpdateAttr(mPageId.c_str(), mRef.c_str(), mAttrs);
- if (page != nullptr)
- page->JniCallTime(getCurrentTime() - startTime);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/action/render_action_update_style.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_update_style.cpp b/weex_core/Source/core/render/action/render_action_update_style.cpp
index 3c15514..9f3509d 100644
--- a/weex_core/Source/core/render/action/render_action_update_style.cpp
+++ b/weex_core/Source/core/render/action/render_action_update_style.cpp
@@ -34,14 +34,7 @@ namespace WeexCore {
}
void RenderActionUpdateStyle::ExecuteAction() {
- RenderPage *page = RenderManager::GetInstance()->GetPage(mPageId);
- if (page == nullptr)
- return;
-
- long long startTime = getCurrentTime();
Bridge_Impl_Android::getInstance()->callUpdateStyle(mPageId.c_str(), mRef.c_str(), mStyle, mMargin,
mPadding, mBorder);
- if (page != nullptr)
- page->JniCallTime(getCurrentTime() - startTime);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/manager/render_manager.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/manager/render_manager.cpp b/weex_core/Source/core/render/manager/render_manager.cpp
index da61a12..d3e9b11 100644
--- a/weex_core/Source/core/render/manager/render_manager.cpp
+++ b/weex_core/Source/core/render/manager/render_manager.cpp
@@ -34,12 +34,13 @@ namespace WeexCore {
RenderPage *page = new RenderPage(pageId);
mPages.insert(std::pair<std::string, RenderPage *>(pageId, page));
+
long long startTime = getCurrentTime();
char *c_data = (char *) data.data();
RenderObject *root = Json2RenderObject(c_data, pageId);
- page->updateDirty(true);
page->ParseJsonTime(getCurrentTime() - startTime);
- page->BuildRenderTreeTime(getCurrentTime() - startTime);
+
+ page->updateDirty(true);
return page->CreateRootRender(root);
}
@@ -59,7 +60,7 @@ namespace WeexCore {
char *c_data = (char *) data.data();
RenderObject *child = Json2RenderObject(c_data, pageId);
page->ParseJsonTime(getCurrentTime() - startTime);
- page->BuildRenderTreeTime(getCurrentTime() - startTime);
+
if (child == nullptr)
return false;
@@ -111,9 +112,9 @@ namespace WeexCore {
long long startTime = getCurrentTime();
char *c_data = (char *) data.data();
std::vector<std::pair<std::string, std::string>> *attrs = Json2Pairs(c_data);
- page->updateDirty(true);
page->ParseJsonTime(getCurrentTime() - startTime);
- page->BuildRenderTreeTime(getCurrentTime() - startTime);
+
+ page->updateDirty(true);
return page->UpdateAttr(ref, attrs);
}
@@ -131,9 +132,9 @@ namespace WeexCore {
long long startTime = getCurrentTime();
char *c_data = (char *) data.data();
std::vector<std::pair<std::string, std::string>> *styles = Json2Pairs(c_data);
- page->updateDirty(true);
page->ParseJsonTime(getCurrentTime() - startTime);
- page->BuildRenderTreeTime(getCurrentTime() - startTime);
+
+ page->updateDirty(true);
return page->UpdateStyle(ref, styles);
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/page/render_page.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.cpp b/weex_core/Source/core/render/page/render_page.cpp
index 6acf8be..b01050b 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -142,7 +142,6 @@ namespace WeexCore {
if (root == nullptr)
return false;
- long long startTime = getCurrentTime();
SetRootRenderObject(root);
if (isnan(render_root->getStyleWidth())) {
@@ -156,7 +155,6 @@ namespace WeexCore {
}
PushRenderToRegisterMap(root);
- BuildRenderTreeTime(getCurrentTime() - startTime);
SendCreateBodyAction(root);
return true;
}
@@ -169,7 +167,6 @@ namespace WeexCore {
}
bool RenderPage::AddRenderObject(const std::string &parentRef, int insertPosition, RenderObject *child) {
- long long startTime = getCurrentTime();
RenderObject *parent = GetRenderObject(parentRef);
if (parent == nullptr || child == nullptr) {
return false;
@@ -182,7 +179,6 @@ namespace WeexCore {
}
PushRenderToRegisterMap(child);
- BuildRenderTreeTime(getCurrentTime() - startTime);
SendAddElementAction(child, parent, insertPosition, false);
Batch();
@@ -190,7 +186,6 @@ namespace WeexCore {
}
bool RenderPage::RemoveRenderObject(const std::string &ref) {
- long long startTime = getCurrentTime();
RenderObject *child = GetRenderObject(ref);
if (child == nullptr)
return false;
@@ -204,15 +199,11 @@ namespace WeexCore {
RemoveRenderFromRegisterMap(child);
delete child;
- BuildRenderTreeTime(getCurrentTime() - startTime);
-
SendRemoveElementAction(ref);
return true;
}
bool RenderPage::MoveRenderObject(const std::string &ref, const std::string &parentRef, int index) {
- long long startTime = getCurrentTime();
-
RenderObject *child = GetRenderObject(ref);
if (child == nullptr)
return false;
@@ -235,14 +226,11 @@ namespace WeexCore {
child->getParent()->removeChild(child);
newParent->addChildAt(child, index);
- BuildRenderTreeTime(getCurrentTime() - startTime);
-
SendMoveElementAction(ref, parentRef, index);
return true;
}
bool RenderPage::UpdateStyle(const std::string &ref, std::vector<std::pair<std::string, std::string>> *src) {
- long long startTime = getCurrentTime();
RenderObject *render = GetRenderObject(ref);
if (render == nullptr || src == nullptr || src->empty())
return false;
@@ -257,7 +245,6 @@ namespace WeexCore {
int result = Bridge_Impl_Android::getInstance()->callHasTransitionPros(mPageId.c_str(), ref.c_str(), src);
if (result == 1) {
- BuildRenderTreeTime(getCurrentTime() - startTime);
SendUpdateStyleAction(render, src, margin, padding, border);
} else {
for (auto iter = src->begin(); iter != src->end(); iter++) {
@@ -312,8 +299,6 @@ namespace WeexCore {
}
}
- BuildRenderTreeTime(getCurrentTime() - startTime);
-
if (style != nullptr || margin != nullptr || padding != nullptr || border != nullptr)
SendUpdateStyleAction(render, style, margin, padding, border);
@@ -358,7 +343,6 @@ namespace WeexCore {
}
bool RenderPage::UpdateAttr(const std::string &ref, std::vector<std::pair<std::string, std::string>> *attrs) {
- long long startTime = getCurrentTime();
RenderObject *render = GetRenderObject(ref);
if (render == nullptr || attrs == nullptr || attrs->empty())
return false;
@@ -408,13 +392,11 @@ namespace WeexCore {
}
bool RenderPage::AddEvent(const std::string &ref, const std::string &event) {
- long long startTime = getCurrentTime();
RenderObject *render = GetRenderObject(ref);
if (render == nullptr)
return false;
render->AddEvent(event);
- BuildRenderTreeTime(getCurrentTime() - startTime);
render_action *action = new RenderActionAddEvent(mPageId, ref, event);
PostRenderAction(action);
@@ -422,13 +404,11 @@ namespace WeexCore {
}
bool RenderPage::RemoveEvent(const std::string &ref, const std::string &event) {
- long long startTime = getCurrentTime();
RenderObject *render = GetRenderObject(ref);
if (render == nullptr)
return false;
render->RemoveEvent(event);
- BuildRenderTreeTime(getCurrentTime() - startTime);
render_action *action = new RenderActionRemoveEvent(mPageId, ref, event);
PostRenderAction(action);
@@ -588,66 +568,69 @@ namespace WeexCore {
PostRenderAction(action);
}
- void RenderPage::JniCallTime(const long long &time) {
- if (mWXCorePerformance != nullptr)
- mWXCorePerformance->jniCallTime += time;
- }
-
void RenderPage::CssLayoutTime(const long long &time) {
if (mWXCorePerformance != nullptr)
mWXCorePerformance->cssLayoutTime += time;
}
- void RenderPage::AddEventActionJNITime(const long long &time) {
+ long long RenderPage::GetFirstScreenCssLayoutTime() {
if (mWXCorePerformance != nullptr)
- mWXCorePerformance->addEventActionJNITime += time;
+ return mWXCorePerformance->firstScreenCssLayoutTime;
+ return 0;
}
- void RenderPage::RemoveEventActionJNITime(const long long &time) {
+ long long RenderPage::GetOnRenderSuccessCssLayoutTime() {
if (mWXCorePerformance != nullptr)
- mWXCorePerformance->removeEventActionJNITime += time;
+ return mWXCorePerformance->onRenderSuccessCssLayoutTime;
+ return 0;
}
- void RenderPage::AddElementActionJNITime(const long long &time) {
+ void RenderPage::ParseJsonTime(const long long &time) {
if (mWXCorePerformance != nullptr)
- mWXCorePerformance->addElementActionJNITime += time;
+ mWXCorePerformance->parseJsonTime += time;
}
- void RenderPage::LayoutActionJniTime(const long long &time) {
- if (mWXCorePerformance != nullptr)
- mWXCorePerformance->layoutActionJniTime += time;
+ long long RenderPage::GetFirstScreenParseJsonTime() {
+if (mWXCorePerformance != nullptr)
+ return mWXCorePerformance->firstScreenParseJsonTime;
+ return 0;
}
- void RenderPage::ParseJsonTime(const long long &time) {
+ long long RenderPage::GetOnRenderSuccessParseJsonTime() {
if (mWXCorePerformance != nullptr)
- mWXCorePerformance->parseJsonTime += time;
+ return mWXCorePerformance->onRenderSuccessParseJsonTime;
+ return 0;
}
- void RenderPage::BuildRenderTreeTime(const long long &time) {
+ void RenderPage::CallBridgeTime(const long long &time) {
if (mWXCorePerformance != nullptr)
- mWXCorePerformance->buildRenderObjectTime += time;
+ mWXCorePerformance->callBridgeTime += time;
}
- void RenderPage::CreateJMapJNITime(const long long &time) {
+ long long RenderPage::GetFirstScreenCallBridgeTime() {
if (mWXCorePerformance != nullptr)
- mWXCorePerformance->createJMapJNITime += time;
+ return mWXCorePerformance->firstScreenCallBridgeTime;
+ return 0;
}
- void RenderPage::CallBridgeTime(const long long &time) {
+ long long RenderPage::GetOnRenderSuccessCallBridgeTime() {
if (mWXCorePerformance != nullptr)
- mWXCorePerformance->jniCallBridgeTime += time;
+ return mWXCorePerformance->onRenderSuccessCallBridgeTime;
+ return 0;
}
- int RenderPage::PrintFirstScreenLog() {
+ std::vector<long> RenderPage::PrintFirstScreenLog() {
+ std::vector<long> ret;
if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->PrintPerformanceLog(onFirstScreen);
- return 0;
+ ret = mWXCorePerformance->PrintPerformanceLog(onFirstScreen);
+ return ret;
}
- int RenderPage::PrintRenderSuccessLog() {
+ std::vector<long> RenderPage::PrintRenderSuccessLog() {
+ std::vector<long> ret;
if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->PrintPerformanceLog(onRenderSuccess);
- return 0;
+ ret = mWXCorePerformance->PrintPerformanceLog(onRenderSuccess);
+ return ret;
}
void RenderPage::Batch() {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/1806f233/weex_core/Source/core/render/page/render_page.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.h b/weex_core/Source/core/render/page/render_page.h
index cffcc99..6a52b11 100644
--- a/weex_core/Source/core/render/page/render_page.h
+++ b/weex_core/Source/core/render/page/render_page.h
@@ -102,29 +102,27 @@ namespace WeexCore {
void Batch();
- void JniCallTime(const long long &time);
-
void CssLayoutTime(const long long &time);
- void AddEventActionJNITime(const long long &time);
-
- void RemoveEventActionJNITime(const long long &time);
+ long long GetFirstScreenCssLayoutTime();
- void AddElementActionJNITime(const long long &time);
-
- void LayoutActionJniTime(const long long &time);
+ long long GetOnRenderSuccessCssLayoutTime();
void ParseJsonTime(const long long &time);
- void BuildRenderTreeTime(const long long &time);
+ long long GetFirstScreenParseJsonTime();
- void CreateJMapJNITime(const long long &time);
+ long long GetOnRenderSuccessParseJsonTime();
void CallBridgeTime(const long long &time);
- int PrintFirstScreenLog();
+ long long GetFirstScreenCallBridgeTime();
+
+ long long GetOnRenderSuccessCallBridgeTime();
- int PrintRenderSuccessLog();
+ std::vector<long> PrintFirstScreenLog();
+
+ std::vector<long> PrintRenderSuccessLog();
void LayoutImmediately();
@@ -139,10 +137,6 @@ namespace WeexCore {
void SetRootRenderObject(RenderObject *root);
- inline RenderObject * GetRootRenderObject() const {
- return render_root;
- }
-
inline std::string PageId() {
return mPageId;
}
[3/5] incubator-weex git commit: [Core] reset var to null
Posted by ky...@apache.org.
[Core] reset var to null
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/ef12b7b9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/ef12b7b9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/ef12b7b9
Branch: refs/heads/master
Commit: ef12b7b939fa6a7627127c804dfba85247de9470
Parents: a14b217
Author: 立省 <li...@alibaba-inc.com>
Authored: Thu May 10 19:23:38 2018 +0800
Committer: miomin <69...@qq.com>
Committed: Wed May 16 18:05:48 2018 +0800
----------------------------------------------------------------------
weex_core/Source/android/bridge/impl/bridge_impl_android.cpp | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/ef12b7b9/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
index 58fcdcf..d46dd0d 100644
--- a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
@@ -95,6 +95,7 @@ namespace WeexCore {
jCallHasTransitionProsMethodId = NULL;
jCallUpdateAttrsMethodId = NULL;
jCallLayoutMethodId = NULL;
+ jCallAppendTreeCreateFinishMethodId = NULL;
jCallCreateFinishMethodId = NULL;
}
[2/5] incubator-weex git commit: * [core] Fix crash due to
layer-limit.
Posted by ky...@apache.org.
* [core] Fix crash due to layer-limit.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/a14b217b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/a14b217b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/a14b217b
Branch: refs/heads/master
Commit: a14b217bac4276828430284de928fbe6243c5b3f
Parents: 1806f23
Author: miomin <69...@qq.com>
Authored: Thu May 10 18:14:05 2018 +0800
Committer: miomin <69...@qq.com>
Committed: Wed May 16 17:46:32 2018 +0800
----------------------------------------------------------------------
.../sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/a14b217b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
index eb3d676..8e3638d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/view/WXFrameLayout.java
@@ -105,8 +105,8 @@ public class WXFrameLayout extends FrameLayout implements WXGestureObservable,IR
try {
dispatchDrawInterval(canvas);
} catch (StackOverflowError e) {
- int deep = reportLayerOverFlowError();
- throw new LayerOverFlowLimitException("Layer overflow limit error: " + deep + " layers!");
+ reportLayerOverFlowError();
+ WXLogUtils.e("FlatGUI Crashed when dispatchDraw", WXLogUtils.getStackTrace(e));
}
} else {
try {
[4/5] incubator-weex git commit: * [core] Use gnustl runtime.
Posted by ky...@apache.org.
* [core] Use gnustl runtime.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/02d9983e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/02d9983e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/02d9983e
Branch: refs/heads/master
Commit: 02d9983e0044042fa7ad4d026af6e35e4ee9d3ff
Parents: ef12b7b
Author: miomin <69...@qq.com>
Authored: Tue May 15 19:39:08 2018 +0800
Committer: miomin <69...@qq.com>
Committed: Wed May 16 19:34:37 2018 +0800
----------------------------------------------------------------------
android/sdk/build.gradle | 5 +-
android/sdk/libs/armeabi/libweexjsc.so | Bin 948168 -> 1320820 bytes
weex_core/Source/CMakeLists.txt | 1 -
.../bridge/impl/weexcore_impl_android.cpp | 54 ---
weex_core/Source/base/Compatible.cpp | 122 -------
weex_core/Source/base/ViewUtils.h | 8 +
weex_core/Source/base/fpconv.cpp | 332 -------------------
weex_core/Source/base/fpconv.h | 33 --
weex_core/Source/base/powers.h | 129 -------
weex_core/Source/core/layout/layout.cpp | 1 +
weex_core/Source/core/parser/dom_parser.cpp | 30 +-
weex_core/Source/core/render/node/render_list.h | 12 +-
weex_core/Source/core/render/node/render_mask.h | 4 +-
.../Source/core/render/node/render_object.h | 1 +
.../Source/core/render/page/render_page.cpp | 42 +--
weex_core/Source/core/render/page/render_page.h | 13 +-
16 files changed, 27 insertions(+), 760 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/android/sdk/build.gradle
----------------------------------------------------------------------
diff --git a/android/sdk/build.gradle b/android/sdk/build.gradle
index 7eed76a..6fd1ee8 100755
--- a/android/sdk/build.gradle
+++ b/android/sdk/build.gradle
@@ -120,7 +120,7 @@ android {
cmake {
arguments '-DANDROID_PLATFORM=android-19',
'-DANDROID_TOOLCHAIN=gcc',
- '-DANDROID_STL=c++_static',
+ '-DANDROID_STL=gnustl_static',
'-DCMAKE_BUILD_TYPE=Release'
}
}
@@ -215,9 +215,6 @@ if(file('../license/LICENSE').exists()){
'Source/android/base/base64/**/*.h','Source/android/base/base64/**/*.cpp',
'Source/android/jniprebuild/jniheader/*.h',
'Source/base/Compatible.cpp',
- 'Source/base/fpconv.cpp',
- 'Source/base/fpconv.h',
- 'Source/base/powers.h',
'Source/IPC/**/*.h','Source/IPC/**/*.cpp'])
}
preBuild.dependsOn licenseFormat
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/android/sdk/libs/armeabi/libweexjsc.so
----------------------------------------------------------------------
diff --git a/android/sdk/libs/armeabi/libweexjsc.so b/android/sdk/libs/armeabi/libweexjsc.so
index bb45615..eb909cd 100644
Binary files a/android/sdk/libs/armeabi/libweexjsc.so and b/android/sdk/libs/armeabi/libweexjsc.so differ
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/weex_core/Source/CMakeLists.txt b/weex_core/Source/CMakeLists.txt
index ef92a1f..77ba922 100644
--- a/weex_core/Source/CMakeLists.txt
+++ b/weex_core/Source/CMakeLists.txt
@@ -24,7 +24,6 @@ include_directories("include")
add_library(weexjsc SHARED
- ./base/fpconv.cpp
./android/jniprebuild/jni_load.cc
./android/base/jni/android_jni.cpp
./android/base/jni/scoped_java_ref.cpp
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
index d7bc154..ef79558 100644
--- a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
@@ -189,60 +189,6 @@ static jlongArray GetRenderFinishTime(JNIEnv *env, jobject jcaller, jstring inst
return jRet;
}
-static jlong GetFirstScreenCallBridgeTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetFirstScreenCallBridgeTime();
-}
-
-static jlong GetFirstScreenCssLayoutTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetFirstScreenCssLayoutTime();
-}
-
-static jlong GetFirstScreenParseJsonTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetFirstScreenParseJsonTime();
-}
-
-static jlong GetOnRenderSuccessCallBridgeTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetOnRenderSuccessCallBridgeTime();
-}
-
-static jlong GetOnRenderSuccessCssLayoutTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetOnRenderSuccessCssLayoutTime();
-}
-
-static jlong GetOnRenderSuccessParseJsonTime(JNIEnv* env, jobject jcaller,
- jstring instanceId) {
- RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
- if (page == nullptr)
- return 0;
-
- return page->GetOnRenderSuccessParseJsonTime();
-}
-
//Notice that this method is invoked from main thread.
static jboolean NotifyLayout(JNIEnv* env, jobject jcaller, jstring instanceId) {
RenderPage *page = RenderManager::GetInstance()->GetPage(jString2StrFast(env, instanceId));
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/Compatible.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/Compatible.cpp b/weex_core/Source/base/Compatible.cpp
deleted file mode 100644
index 3fb0e5c..0000000
--- a/weex_core/Source/base/Compatible.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <ctype.h>
-#include <errno.h>
-#include <grp.h>
-#include <math.h>
-#include <mntent.h>
-#include <netdb.h>
-#include <pthread.h>
-#include <pwd.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-namespace WeexCore {
-int sigemptyset(sigset_t *set) {
- if (set == NULL) {
- errno = EINVAL;
- return -1;
- }
- memset(set, 0, sizeof(sigset_t));
- return 0;
-}
-
-int sigfillset(sigset_t *set) {
- if (set == NULL) {
- errno = EINVAL;
- return -1;
- }
- memset(set, ~0, sizeof(sigset_t));
- return 0;
-}
-
-int sigaddset(sigset_t *set, int signum) {
- int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
- unsigned long *local_set = reinterpret_cast<unsigned long *>(set);
- if (set == NULL || bit < 0 || bit >= static_cast<int>(8 * sizeof(sigset_t))) {
- errno = EINVAL;
- return -1;
- }
- local_set[bit / LONG_BIT] |= 1UL << (bit % LONG_BIT);
- return 0;
-}
-
-int sigdelset(sigset_t *set, int signum) {
- int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
- unsigned long *local_set = reinterpret_cast<unsigned long *>(set);
- if (set == NULL || bit < 0 || bit >= static_cast<int>(8 * sizeof(sigset_t))) {
- errno = EINVAL;
- return -1;
- }
- local_set[bit / LONG_BIT] &= ~(1UL << (bit % LONG_BIT));
- return 0;
-}
-
-int getpagesize() {
- // We dont use sysconf(3) here because that drags in stdio, which makes static binaries fat.
- return PAGE_SIZE;
-}
-
-void srandom(unsigned int __s) { srand48(__s); }
-
-int isinf(double n) {
- return __builtin_isinf(n);
-}
-
-int posix_memalign(void **memptr, size_t alignment, size_t bytes) {
- if (!memptr)
- return EINVAL;
- *memptr = memalign(alignment, bytes);
- if (!*memptr)
- return ENOMEM;
- return 0;
-}
-
-int sigismember(const sigset_t *set, int signum) {
- int bit = signum - 1; // Signal numbers start at 1, but bit positions start at 0.
- const unsigned long *local_set = reinterpret_cast<const unsigned long *>(set);
- if (set == NULL || bit < 0 || bit >= static_cast<int>(8 * sizeof(sigset_t))) {
- errno = EINVAL;
- return -1;
- }
- return static_cast<int>((local_set[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1);
-}
-
-int abs(int j) {
- return (j < 0 ? -j : j);
-}
-
-long labs(long j) {
- return (j < 0 ? -j : j);
-}
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/ViewUtils.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/ViewUtils.h b/weex_core/Source/base/ViewUtils.h
index 8983326..f73aeca 100644
--- a/weex_core/Source/base/ViewUtils.h
+++ b/weex_core/Source/base/ViewUtils.h
@@ -22,6 +22,7 @@
#include <core/config/core_environment.h>
#include <cmath>
#include <cstdlib>
+#include <sstream>
namespace WeexCore {
@@ -32,6 +33,13 @@ namespace WeexCore {
const std::string AUTO_UNIT("auto");
const std::string NONE("none");
+ template<typename T>
+ inline std::string to_string(const T &n) {
+ std::ostringstream stm;
+ stm << n;
+ return stm.str();
+ }
+
inline std::string &Trim(std::string &s) {
if (s.empty()) {
return s;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/fpconv.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/fpconv.cpp b/weex_core/Source/base/fpconv.cpp
deleted file mode 100755
index 3fbd55a..0000000
--- a/weex_core/Source/base/fpconv.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-#include <stdbool.h>
-#include <string.h>
-
-#include "fpconv.h"
-#include "powers.h"
-
-#define fracmask 0x000FFFFFFFFFFFFFU
-#define expmask 0x7FF0000000000000U
-#define hiddenbit 0x0010000000000000U
-#define signmask 0x8000000000000000U
-#define expbias (1023 + 52)
-
-#define absv(n) ((n) < 0 ? -(n) : (n))
-#define minv(a, b) ((a) < (b) ? (a) : (b))
-
-static uint64_t tens[] = {
- 10000000000000000000U, 1000000000000000000U, 100000000000000000U,
- 10000000000000000U, 1000000000000000U, 100000000000000U,
- 10000000000000U, 1000000000000U, 100000000000U,
- 10000000000U, 1000000000U, 100000000U,
- 10000000U, 1000000U, 100000U,
- 10000U, 1000U, 100U,
- 10U, 1U
-};
-
-static inline uint64_t get_dbits(double d)
-{
- union {
- double dbl;
- uint64_t i;
- } dbl_bits = { d };
-
- return dbl_bits.i;
-}
-
-static Fp build_fp(double d)
-{
- uint64_t bits = get_dbits(d);
-
- Fp fp;
- fp.frac = bits & fracmask;
- fp.exp = (bits & expmask) >> 52;
-
- if(fp.exp) {
- fp.frac += hiddenbit;
- fp.exp -= expbias;
-
- } else {
- fp.exp = -expbias + 1;
- }
-
- return fp;
-}
-
-static void normalize(Fp* fp)
-{
- while ((fp->frac & hiddenbit) == 0) {
- fp->frac <<= 1;
- fp->exp--;
- }
-
- int shift = 64 - 52 - 1;
- fp->frac <<= shift;
- fp->exp -= shift;
-}
-
-static void get_normalized_boundaries(Fp* fp, Fp* lower, Fp* upper)
-{
- upper->frac = (fp->frac << 1) + 1;
- upper->exp = fp->exp - 1;
-
- while ((upper->frac & (hiddenbit << 1)) == 0) {
- upper->frac <<= 1;
- upper->exp--;
- }
-
- int u_shift = 64 - 52 - 2;
-
- upper->frac <<= u_shift;
- upper->exp = upper->exp - u_shift;
-
-
- int l_shift = fp->frac == hiddenbit ? 2 : 1;
-
- lower->frac = (fp->frac << l_shift) - 1;
- lower->exp = fp->exp - l_shift;
-
-
- lower->frac <<= lower->exp - upper->exp;
- lower->exp = upper->exp;
-}
-
-static Fp multiply(Fp* a, Fp* b)
-{
- const uint64_t lomask = 0x00000000FFFFFFFF;
-
- uint64_t ah_bl = (a->frac >> 32) * (b->frac & lomask);
- uint64_t al_bh = (a->frac & lomask) * (b->frac >> 32);
- uint64_t al_bl = (a->frac & lomask) * (b->frac & lomask);
- uint64_t ah_bh = (a->frac >> 32) * (b->frac >> 32);
-
- uint64_t tmp = (ah_bl & lomask) + (al_bh & lomask) + (al_bl >> 32);
- /* round up */
- tmp += 1U << 31;
-
- Fp fp = {
- ah_bh + (ah_bl >> 32) + (al_bh >> 32) + (tmp >> 32),
- a->exp + b->exp + 64
- };
-
- return fp;
-}
-
-static void round_digit(char* digits, int ndigits, uint64_t delta, uint64_t rem, uint64_t kappa, uint64_t frac)
-{
- while (rem < frac && delta - rem >= kappa &&
- (rem + kappa < frac || frac - rem > rem + kappa - frac)) {
-
- digits[ndigits - 1]--;
- rem += kappa;
- }
-}
-
-static int generate_digits(Fp* fp, Fp* upper, Fp* lower, char* digits, int* K)
-{
- uint64_t wfrac = upper->frac - fp->frac;
- uint64_t delta = upper->frac - lower->frac;
-
- Fp one;
- one.frac = 1ULL << -upper->exp;
- one.exp = upper->exp;
-
- uint64_t part1 = upper->frac >> -one.exp;
- uint64_t part2 = upper->frac & (one.frac - 1);
-
- int idx = 0, kappa = 10;
- uint64_t* divp;
- /* 1000000000 */
- for(divp = tens + 10; kappa > 0; divp++) {
-
- uint64_t div = *divp;
- unsigned digit = part1 / div;
-
- if (digit || idx) {
- digits[idx++] = digit + '0';
- }
-
- part1 -= digit * div;
- kappa--;
-
- uint64_t tmp = (part1 <<-one.exp) + part2;
- if (tmp <= delta) {
- *K += kappa;
- round_digit(digits, idx, delta, tmp, div << -one.exp, wfrac);
-
- return idx;
- }
- }
-
- /* 10 */
- uint64_t* unit = tens + 18;
-
- while(true) {
- part2 *= 10;
- delta *= 10;
- kappa--;
-
- unsigned digit = part2 >> -one.exp;
- if (digit || idx) {
- digits[idx++] = digit + '0';
- }
-
- part2 &= one.frac - 1;
- if (part2 < delta) {
- *K += kappa;
- round_digit(digits, idx, delta, part2, one.frac, wfrac * *unit);
-
- return idx;
- }
-
- unit--;
- }
-}
-
-static int grisu2(double d, char* digits, int* K)
-{
- Fp w = build_fp(d);
-
- Fp lower, upper;
- get_normalized_boundaries(&w, &lower, &upper);
-
- normalize(&w);
-
- int k;
- Fp cp = find_cachedpow10(upper.exp, &k);
-
- w = multiply(&w, &cp);
- upper = multiply(&upper, &cp);
- lower = multiply(&lower, &cp);
-
- lower.frac++;
- upper.frac--;
-
- *K = -k;
-
- return generate_digits(&w, &upper, &lower, digits, K);
-}
-
-static int emit_digits(char* digits, int ndigits, char* dest, int K, bool neg)
-{
- int exp = absv(K + ndigits - 1);
-
- /* write plain integer */
- if(K >= 0 && (exp < (ndigits + 7))) {
- memcpy(dest, digits, ndigits);
- memset(dest + ndigits, '0', K);
-
- return ndigits + K;
- }
-
- /* write decimal w/o scientific notation */
- if(K < 0 && (K > -7 || exp < 4)) {
- int offset = ndigits - absv(K);
- /* fp < 1.0 -> write leading zero */
- if(offset <= 0) {
- offset = -offset;
- dest[0] = '0';
- dest[1] = '.';
- memset(dest + 2, '0', offset);
- memcpy(dest + offset + 2, digits, ndigits);
-
- return ndigits + 2 + offset;
-
- /* fp > 1.0 */
- } else {
- memcpy(dest, digits, offset);
- dest[offset] = '.';
- memcpy(dest + offset + 1, digits + offset, ndigits - offset);
-
- return ndigits + 1;
- }
- }
-
- /* write decimal w/ scientific notation */
- ndigits = minv(ndigits, 18 - neg);
-
- int idx = 0;
- dest[idx++] = digits[0];
-
- if(ndigits > 1) {
- dest[idx++] = '.';
- memcpy(dest + idx, digits + 1, ndigits - 1);
- idx += ndigits - 1;
- }
-
- dest[idx++] = 'e';
-
- char sign = K + ndigits - 1 < 0 ? '-' : '+';
- dest[idx++] = sign;
-
- int cent = 0;
-
- if(exp > 99) {
- cent = exp / 100;
- dest[idx++] = cent + '0';
- exp -= cent * 100;
- }
- if(exp > 9) {
- int dec = exp / 10;
- dest[idx++] = dec + '0';
- exp -= dec * 10;
-
- } else if(cent) {
- dest[idx++] = '0';
- }
-
- dest[idx++] = exp % 10 + '0';
-
- return idx;
-}
-
-static int filter_special(double fp, char* dest)
-{
- if(fp == 0.0) {
- dest[0] = '0';
- return 1;
- }
-
- uint64_t bits = get_dbits(fp);
-
- bool nan = (bits & expmask) == expmask;
-
- if(!nan) {
- return 0;
- }
-
- if(bits & fracmask) {
- dest[0] = 'n'; dest[1] = 'a'; dest[2] = 'n';
-
- } else {
- dest[0] = 'i'; dest[1] = 'n'; dest[2] = 'f';
- }
-
- return 3;
-}
-
-int fpconv_dtoa(double d, char dest[24])
-{
- char digits[18];
-
- int str_len = 0;
- bool neg = false;
-
- if(get_dbits(d) & signmask) {
- dest[0] = '-';
- str_len++;
- neg = true;
- }
-
- int spec = filter_special(d, dest + str_len);
-
- if(spec) {
- return str_len + spec;
- }
-
- int K = 0;
- int ndigits = grisu2(d, digits, &K);
-
- str_len += emit_digits(digits, ndigits, dest + str_len, K, neg);
-
- return str_len;
-}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/fpconv.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/fpconv.h b/weex_core/Source/base/fpconv.h
deleted file mode 100755
index 58bbccc..0000000
--- a/weex_core/Source/base/fpconv.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef FPCONV_H
-#define FPCONV_H
-
-/* Fast and accurate double to string conversion based on Florian Loitsch's
- * Grisu-algorithm[1].
- *
- * Input:
- * fp -> the double to convert, dest -> destination buffer.
- * The generated string will never be longer than 24 characters.
- * Make sure to pass a pointer to at least 24 bytes of memory.
- * The emitted string will not be null terminated.
- *
- * Output:
- * The number of written characters.
- *
- * Exemplary usage:
- *
- * void print(double d)
- * {
- * char buf[24 + 1] // plus null terminator
- * int str_len = fpconv_dtoa(d, buf);
- *
- * buf[str_len] = '\0';
- * printf("%s", buf);
- * }
- *
- */
-
-int fpconv_dtoa(double fp, char dest[24]);
-
-#endif
-
-/* [1] http://florian.loitsch.com/publications/dtoa-pldi2010.pdf */
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/base/powers.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/powers.h b/weex_core/Source/base/powers.h
deleted file mode 100755
index 52e5da5..0000000
--- a/weex_core/Source/base/powers.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#include <stdint.h>
-
-#define npowers 87
-#define steppowers 8
-#define firstpower -348 /* 10 ^ -348 */
-
-#define expmax -32
-#define expmin -60
-
-
-typedef struct Fp {
- uint64_t frac;
- int exp;
-} Fp;
-
-static Fp powers_ten[] = {
- {18054884314459144840U, -1220},
- {13451937075301367670U, -1193},
- {10022474136428063862U, -1166},
- {14934650266808366570U, -1140},
- {11127181549972568877U, -1113},
- {16580792590934885855U, -1087},
- {12353653155963782858U, -1060},
- {18408377700990114895U, -1034},
- {13715310171984221708U, -1007},
- {10218702384817765436U, -980},
- {15227053142812498563U, -954},
- {11345038669416679861U, -927},
- {16905424996341287883U, -901},
- {12595523146049147757U, -874},
- {9384396036005875287U, -847},
- {13983839803942852151U, -821},
- {10418772551374772303U, -794},
- {15525180923007089351U, -768},
- {11567161174868858868U, -741},
- {17236413322193710309U, -715},
- {12842128665889583758U, -688},
- {9568131466127621947U, -661},
- {14257626930069360058U, -635},
- {10622759856335341974U, -608},
- {15829145694278690180U, -582},
- {11793632577567316726U, -555},
- {17573882009934360870U, -529},
- {13093562431584567480U, -502},
- {9755464219737475723U, -475},
- {14536774485912137811U, -449},
- {10830740992659433045U, -422},
- {16139061738043178685U, -396},
- {12024538023802026127U, -369},
- {17917957937422433684U, -343},
- {13349918974505688015U, -316},
- {9946464728195732843U, -289},
- {14821387422376473014U, -263},
- {11042794154864902060U, -236},
- {16455045573212060422U, -210},
- {12259964326927110867U, -183},
- {18268770466636286478U, -157},
- {13611294676837538539U, -130},
- {10141204801825835212U, -103},
- {15111572745182864684U, -77},
- {11258999068426240000U, -50},
- {16777216000000000000U, -24},
- {12500000000000000000U, 3},
- {9313225746154785156U, 30},
- {13877787807814456755U, 56},
- {10339757656912845936U, 83},
- {15407439555097886824U, 109},
- {11479437019748901445U, 136},
- {17105694144590052135U, 162},
- {12744735289059618216U, 189},
- {9495567745759798747U, 216},
- {14149498560666738074U, 242},
- {10542197943230523224U, 269},
- {15709099088952724970U, 295},
- {11704190886730495818U, 322},
- {17440603504673385349U, 348},
- {12994262207056124023U, 375},
- {9681479787123295682U, 402},
- {14426529090290212157U, 428},
- {10748601772107342003U, 455},
- {16016664761464807395U, 481},
- {11933345169920330789U, 508},
- {17782069995880619868U, 534},
- {13248674568444952270U, 561},
- {9871031767461413346U, 588},
- {14708983551653345445U, 614},
- {10959046745042015199U, 641},
- {16330252207878254650U, 667},
- {12166986024289022870U, 694},
- {18130221999122236476U, 720},
- {13508068024458167312U, 747},
- {10064294952495520794U, 774},
- {14996968138956309548U, 800},
- {11173611982879273257U, 827},
- {16649979327439178909U, 853},
- {12405201291620119593U, 880},
- {9242595204427927429U, 907},
- {13772540099066387757U, 933},
- {10261342003245940623U, 960},
- {15290591125556738113U, 986},
- {11392378155556871081U, 1013},
- {16975966327722178521U, 1039},
- {12648080533535911531U, 1066}
-};
-
-static Fp find_cachedpow10(int exp, int *k) {
- const double one_log_ten = 0.30102999566398114;
-
- int approx = -(exp + npowers) * one_log_ten;
- int idx = (approx - firstpower) / steppowers;
-
- while (1) {
- int current = exp + powers_ten[idx].exp + 64;
-
- if (current < expmin) {
- idx++;
- continue;
- }
-
- if (current > expmax) {
- idx--;
- continue;
- }
-
- *k = (firstpower + idx * steppowers);
-
- return powers_ten[idx];
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/layout/layout.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/layout/layout.cpp b/weex_core/Source/core/layout/layout.cpp
index a2fc800..cbccbab 100644
--- a/weex_core/Source/core/layout/layout.cpp
+++ b/weex_core/Source/core/layout/layout.cpp
@@ -17,6 +17,7 @@
* under the License.
*/
#include "layout.h"
+#include <tuple>
using namespace WeexCore;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/parser/dom_parser.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/parser/dom_parser.cpp b/weex_core/Source/core/parser/dom_parser.cpp
index 89aac39..13d9132 100644
--- a/weex_core/Source/core/parser/dom_parser.cpp
+++ b/weex_core/Source/core/parser/dom_parser.cpp
@@ -18,10 +18,10 @@
*/
#include "dom_parser.h"
-#include <base/fpconv.h>
#include <core/render/node/render_object.h>
#include <core/render/page/render_page.h>
#include <core/render/node/factory/render_creator.h>
+#include <base/ViewUtils.h>
using namespace std;
using namespace rapidjson;
@@ -365,23 +365,10 @@ namespace WeexCore {
while (const char *key2 = r.NextObjectKey()) {
if (r.PeekType() == kNumberType) {
RAPIDJSON_ASSERT(r.PeekType() == kNumberType);
- char *temp = new char[65];
if (0 == strcmp(key, "attr")) {
- int len = fpconv_dtoa(r.GetDouble(), temp);
- temp[len] = '\0';
- char value[len + 1];
- strcpy(value, temp);
- render->AddAttr(key2, value);
+ render->AddAttr(key2, to_string(r.GetDouble()));
} else if (0 == strcmp(key, "style")) {
- int len = fpconv_dtoa(r.GetDouble(), temp);
- temp[len] = '\0';
- char value[len + 1];
- strcpy(value, temp);
- render->AddStyle(key2, value);
- }
- if (temp != nullptr) {
- delete[]temp;
- temp = nullptr;
+ render->AddStyle(key2, to_string(r.GetDouble()));
}
} else if (r.PeekType() == kStringType) {
RAPIDJSON_ASSERT(r.PeekType() == kStringType);
@@ -499,17 +486,8 @@ namespace WeexCore {
while (const char *key = r.NextObjectKey()) {
if (r.PeekType() == kNumberType) {
RAPIDJSON_ASSERT(r.PeekType() == kNumberType);
- char *temp = new char[65];
- int len = fpconv_dtoa(r.GetDouble(), temp);
- temp[len] = '\0';
- char value[len + 1];
- strcpy(value, temp);
- std::pair<std::string, std::string> myPair(key, value);
+ std::pair<std::string, std::string> myPair(key, to_string(r.GetDouble()));
pairs->insert(pairs->end(), myPair);
- if (temp != nullptr) {
- delete[]temp;
- temp = nullptr;
- }
} else if (r.PeekType() == kStringType) {
RAPIDJSON_ASSERT(r.PeekType() == kStringType);
const char *value = r.GetString();
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/node/render_list.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_list.h b/weex_core/Source/core/render/node/render_list.h
index 2e985bf..a1cb190 100644
--- a/weex_core/Source/core/render/node/render_list.h
+++ b/weex_core/Source/core/render/node/render_list.h
@@ -156,9 +156,9 @@ namespace WeexCore {
mIsPreCalculateCellWidth = true;
if(getColumnCount() > 0 || getColumnWidth() > 0 || mColumnCount > COLUMN_COUNT_NORMAL){
- attrs->insert(std::pair<std::string, std::string>(COLUMN_COUNT, std::to_string(mColumnCount)));
- attrs->insert(std::pair<std::string, std::string>(COLUMN_GAP, std::to_string(mColumnGap)));
- attrs->insert(std::pair<std::string, std::string>(COLUMN_WIDTH, std::to_string(mColumnWidth)));
+ attrs->insert(std::pair<std::string, std::string>(COLUMN_COUNT, to_string(mColumnCount)));
+ attrs->insert(std::pair<std::string, std::string>(COLUMN_GAP, to_string(mColumnGap)));
+ attrs->insert(std::pair<std::string, std::string>(COLUMN_WIDTH, to_string(mColumnWidth)));
}
}
return attrs;
@@ -205,11 +205,11 @@ namespace WeexCore {
void AddRenderObjectWidth(RenderObject *child, const bool updating) {
if (Type() == kRenderWaterfall || Type() == kRenderRecycleList) {
if(child->Type() == kRenderHeader || child->Type() == kRenderFooter) {
- child->ApplyStyle(WIDTH, std::to_string(mAvailableWidth), updating);
+ child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating);
} else if (child->getStypePositionType() == kSticky) {
- child->ApplyStyle(WIDTH, std::to_string(GetViewPortWidth()), updating);
+ child->ApplyStyle(WIDTH, to_string(GetViewPortWidth()), updating);
} else if (child->Type() == kRenderCell || child->Type() == kRenderCellSlot){
- child->ApplyStyle(WIDTH, std::to_string(mColumnWidth), updating);
+ child->ApplyStyle(WIDTH, to_string(mColumnWidth), updating);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/node/render_mask.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_mask.h b/weex_core/Source/core/render/node/render_mask.h
index 690acdb..da7250a 100644
--- a/weex_core/Source/core/render/node/render_mask.h
+++ b/weex_core/Source/core/render/node/render_mask.h
@@ -45,8 +45,8 @@ namespace WeexCore {
}
style->insert(std::pair<std::string, std::string>(POSITION, "absolute"));
- style->insert(std::pair<std::string, std::string>(WIDTH, std::to_string(getWebPxByWidth(width, GetViewPortWidth()))));
- style->insert(std::pair<std::string, std::string>(HEIGHT, std::to_string(getWebPxByWidth(height, GetViewPortWidth()))));
+ style->insert(std::pair<std::string, std::string>(WIDTH, to_string(getWebPxByWidth(width, GetViewPortWidth()))));
+ style->insert(std::pair<std::string, std::string>(HEIGHT, to_string(getWebPxByWidth(height, GetViewPortWidth()))));
style->insert(std::pair<std::string, std::string>(TOP, "0"));
return style;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/node/render_object.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_object.h b/weex_core/Source/core/render/node/render_object.h
index 2671fe1..15d3f8c 100644
--- a/weex_core/Source/core/render/node/render_object.h
+++ b/weex_core/Source/core/render/node/render_object.h
@@ -32,6 +32,7 @@
#include <core/render/page/render_page.h>
#include <core/css/constants_value.h>
#include <android/base/log_utils.h>
+#include <functional>
#define JSON_OBJECT_MARK_CHAR '{'
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/page/render_page.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.cpp b/weex_core/Source/core/render/page/render_page.cpp
index b01050b..f0c6a05 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -264,7 +264,7 @@ namespace WeexCore {
(*iter).second,
0,
[=, &flag](float foo) {
- (*iter).second = std::to_string(foo),
+ (*iter).second = to_string(foo),
margin->insert(margin->end(), (*iter)),
flag = true;
});
@@ -277,7 +277,7 @@ namespace WeexCore {
(*iter).second,
0,
[=, &flag](float foo) {
- (*iter).second = std::to_string(foo),
+ (*iter).second = to_string(foo),
padding->insert(padding->end(), (*iter)),
flag = true;
});
@@ -290,7 +290,7 @@ namespace WeexCore {
(*iter).second,
0,
[=, &flag](float foo) {
- (*iter).second = std::to_string(foo),
+ (*iter).second = to_string(foo),
border->insert(border->end(), (*iter)),
flag = true;
});
@@ -573,52 +573,16 @@ namespace WeexCore {
mWXCorePerformance->cssLayoutTime += time;
}
- long long RenderPage::GetFirstScreenCssLayoutTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->firstScreenCssLayoutTime;
- return 0;
- }
-
- long long RenderPage::GetOnRenderSuccessCssLayoutTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->onRenderSuccessCssLayoutTime;
- return 0;
- }
-
void RenderPage::ParseJsonTime(const long long &time) {
if (mWXCorePerformance != nullptr)
mWXCorePerformance->parseJsonTime += time;
}
- long long RenderPage::GetFirstScreenParseJsonTime() {
-if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->firstScreenParseJsonTime;
- return 0;
- }
-
- long long RenderPage::GetOnRenderSuccessParseJsonTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->onRenderSuccessParseJsonTime;
- return 0;
- }
-
void RenderPage::CallBridgeTime(const long long &time) {
if (mWXCorePerformance != nullptr)
mWXCorePerformance->callBridgeTime += time;
}
- long long RenderPage::GetFirstScreenCallBridgeTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->firstScreenCallBridgeTime;
- return 0;
- }
-
- long long RenderPage::GetOnRenderSuccessCallBridgeTime() {
- if (mWXCorePerformance != nullptr)
- return mWXCorePerformance->onRenderSuccessCallBridgeTime;
- return 0;
- }
-
std::vector<long> RenderPage::PrintFirstScreenLog() {
std::vector<long> ret;
if (mWXCorePerformance != nullptr)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/02d9983e/weex_core/Source/core/render/page/render_page.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.h b/weex_core/Source/core/render/page/render_page.h
index 6a52b11..4a96a87 100644
--- a/weex_core/Source/core/render/page/render_page.h
+++ b/weex_core/Source/core/render/page/render_page.h
@@ -24,6 +24,7 @@
#include <map>
#include <jni.h>
#include <cmath>
+#include <atomic>
namespace WeexCore {
@@ -104,22 +105,10 @@ namespace WeexCore {
void CssLayoutTime(const long long &time);
- long long GetFirstScreenCssLayoutTime();
-
- long long GetOnRenderSuccessCssLayoutTime();
-
void ParseJsonTime(const long long &time);
- long long GetFirstScreenParseJsonTime();
-
- long long GetOnRenderSuccessParseJsonTime();
-
void CallBridgeTime(const long long &time);
- long long GetFirstScreenCallBridgeTime();
-
- long long GetOnRenderSuccessCallBridgeTime();
-
std::vector<long> PrintFirstScreenLog();
std::vector<long> PrintRenderSuccessLog();
[5/5] incubator-weex git commit: * [core] Fix compile error.
Posted by ky...@apache.org.
* [core] Fix compile error.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/97da4cb7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/97da4cb7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/97da4cb7
Branch: refs/heads/master
Commit: 97da4cb710f4fc3d9de2f14000b88f495ad58a84
Parents: 02d9983
Author: miomin <69...@qq.com>
Authored: Wed May 16 19:36:41 2018 +0800
Committer: miomin <69...@qq.com>
Committed: Wed May 16 19:36:41 2018 +0800
----------------------------------------------------------------------
weex_core/Source/android/bridge/impl/bridge_impl_android.cpp | 2 --
.../bridge/impl/native_render_object_utils_impl_android.cpp | 4 ----
.../Source/core/render/action/render_action_add_element.cpp | 2 --
3 files changed, 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/97da4cb7/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
index d46dd0d..be72c92 100644
--- a/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/bridge_impl_android.cpp
@@ -593,8 +593,6 @@ namespace WeexCore {
env->DeleteLocalRef(jPaddings);
env->DeleteLocalRef(jBorders);
- if (page != nullptr)
- page->CallBridgeTime(getCurrentTime() - startTime);
return flag;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/97da4cb7/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp b/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
index 6d43347..f56ee1f 100644
--- a/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp
@@ -95,10 +95,6 @@ static jlong CopyRenderObject(JNIEnv* env, jclass jcaller, jlong ptr){
}
static void showRenderObjectLayout(RenderObject *renderObject, int level){
- LOGE("RenderObject", "layout %s %d %p %f %f %f %f ", renderObject->Type().c_str(),
- renderObject->getStypePositionType(),
- renderObject, renderObject->getLayoutHeight(), renderObject->getLayoutWidth(),
- renderObject->getLayoutPositionLeft(), renderObject->getLayoutPositionRight());
for(auto it = renderObject->ChildListIterBegin(); it != renderObject->ChildListIterEnd(); it++){
RenderObject* child = static_cast<RenderObject*>(*it);
showRenderObjectLayout(child, level + 1);
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/97da4cb7/weex_core/Source/core/render/action/render_action_add_element.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/action/render_action_add_element.cpp b/weex_core/Source/core/render/action/render_action_add_element.cpp
index 0ca77b6..8be0efb 100644
--- a/weex_core/Source/core/render/action/render_action_add_element.cpp
+++ b/weex_core/Source/core/render/action/render_action_add_element.cpp
@@ -40,7 +40,5 @@ namespace WeexCore {
Bridge_Impl_Android::getInstance()->callAddElement(mPageId.c_str(), mComponentType.c_str(), mRef.c_str(),
mIndex, mParentRef.c_str(), mStyles, mAttributes,
mEvents, mMargins, mPaddings, mBorders, mWillLayout);
- page->JniCallTime(getCurrentTime() - startTime);
- page->AddElementActionJNITime(getCurrentTime() - startTime);
}
}