You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ta...@apache.org on 2017/04/24 03:51:16 UTC

[42/50] [abbrv] incubator-weex git commit: * [html5] update perf time.

* [html5] update perf time.


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

Branch: refs/heads/0.12-dev
Commit: bd794e5e81b97d9503dc0166801c585dbcb5e98d
Parents: f13c453
Author: MrRaindrop <te...@gmail.com>
Authored: Wed Apr 19 12:17:02 2017 +0800
Committer: MrRaindrop <te...@gmail.com>
Committed: Wed Apr 19 12:17:02 2017 +0800

----------------------------------------------------------------------
 html5/render/vue/mixins/base.js | 16 ++++++--
 html5/render/vue/utils/perf.js  | 76 +++++++++++++++++++++++++-----------
 2 files changed, 65 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bd794e5e/html5/render/vue/mixins/base.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/mixins/base.js b/html5/render/vue/mixins/base.js
index c8185d5..819146e 100644
--- a/html5/render/vue/mixins/base.js
+++ b/html5/render/vue/mixins/base.js
@@ -24,7 +24,9 @@ import {
 
 import {
   tagBeforeCreate,
-  tagMounted,
+  // tagMounted,
+  tagRootMounted,
+  tagFirstScreen,
   tagBeforeUpdate,
   tagUpdated,
   tagBegin,
@@ -61,14 +63,20 @@ export default {
   },
 
   mounted () {
+    if (this.$options._componentTag === 'image') {
+      global._has_image_in_first_screen = true
+    }
+    if (this === this.$root) {
+      tagRootMounted()
+      if (!global._has_image_in_first_screen) {
+        tagFirstScreen()
+      }
+    }
     if (!weex._root) {
       weex._root = this.$root.$el
       weex._root.classList.add('weex-root')
     }
     watchAppear(this)
-    if (process.env.NODE_ENV === 'development') {
-      tagMounted()
-    }
   },
 
   beforeUpdate () {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/bd794e5e/html5/render/vue/utils/perf.js
----------------------------------------------------------------------
diff --git a/html5/render/vue/utils/perf.js b/html5/render/vue/utils/perf.js
index f8540eb..13be79f 100644
--- a/html5/render/vue/utils/perf.js
+++ b/html5/render/vue/utils/perf.js
@@ -73,6 +73,45 @@ function getEntries (): Array<any> {
     : [{ responseEnd: getNow() - IMG_REC_INDENT }]
 }
 
+function _d (func: Function, wait: number) {
+  let timerId
+  let now
+  function later (now) {
+    timerId = null
+    func(now)
+  }
+  return function () {
+    now = getNow()
+    clearTimeout(timerId)
+    timerId = setTimeout(later.bind(null, now), wait)
+  }
+}
+
+export function tagFirstScreen (time?: number): void {
+  if (!time) {
+    time = getNow()
+  }
+  perf.latestRenderFinishes.push(time)
+  const start = Math.max(earliestBeforeCreateTime, earliestBeforeUpdateTime)
+  perf.renderTime.push({
+    start,
+    end: time,
+    duration: time - start
+  })
+
+  const num = perf.renderTime.length
+  perf[`screenTime${num}`] = time
+  window.weex.emit('renderfinish', time)
+  if (!isFirstScreenDetected) {
+    isFirstScreenDetected = true
+    window.weex.emit('firstscreenfinish', time)
+  }
+  if (process.env.NODE_ENV === 'development') {
+    console.log(`screenTime[${num}]: ${time} ms.`)
+    console.log('_weex_perf:', window._weex_perf)
+  }
+}
+
 /**
  * get first screen time.
  */
@@ -90,25 +129,7 @@ const debouncedTagImg = debounce(function () {
     })
     i++
   }
-  perf.latestRenderFinishes.push(end)
-  const start = Math.max(earliestBeforeCreateTime, earliestBeforeUpdateTime)
-  perf.renderTime.push({
-    start,
-    end,
-    duration: end - start
-  })
-
-  const num = perf.renderTime.length
-  perf[`screenTime${num}`] = end
-  window.weex.emit('renderfinish', end)
-  if (!isFirstScreenDetected) {
-    isFirstScreenDetected = true
-    window.weex.emit('firstscreenfinish', end)
-  }
-  if (process.env.NODE_ENV === 'development') {
-    console.log(`screenTime[${num}]: ${end} ms.`)
-    console.log('_weex_perf:', window._weex_perf)
-  }
+  tagFirstScreen(end)
 }, IMG_REC_INDENT)
 
 export function tagImg (): void {
@@ -128,11 +149,21 @@ export function tagBeforeCreate (): void {
   depressedTagBeforeCreate()
 }
 
+export function tagRootMounted (): void {
+  const now = getNow()
+  perf.latestMounts.push(now)
+  if (!perf.firstAllMountedTime) {
+    perf.firstAllMountedTime = now
+    if (process.env.NODE_ENV === 'development') {
+      console.log(`first all mounted time: ${now} ms.`)
+    }
+  }
+}
+
 /**
  * recording the latest 'mounted' time.
  */
-const debouncedTagMounted = debounce(function () {
-  const now = getNow()
+const debouncedTagMounted = _d(function (now) {
   perf.latestMounts.push(now)
   perf.createTime.push({
     start: earliestBeforeCreateTime,
@@ -168,8 +199,7 @@ export function tagBeforeUpdate (): void {
 /**
  * recording the latest 'updated' time.
  */
-const debouncedTagUpdated = debounce(function () {
-  const now = getNow()
+const debouncedTagUpdated = _d(function (now) {
   perf.latestUpdates.push(now)
   perf.updateTime.push({
     start: earliestBeforeUpdateTime,