From f26e9d5b17b56af01d63c1fca0435d01ecebdbfd Mon Sep 17 00:00:00 2001 From: ZHOU <14109328d@connect.polyu.hk> Date: Mon, 22 Aug 2016 12:41:01 -0400 Subject: [PATCH 1/2] Allowing measurement of multiple time slots Changed implementation of measureStart and measureStop, added measurePause function, using an array to store measured time slots --- README.md | 21 ++++++++++++++++++--- src/timer.js | 30 ++++++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1a34df3..e6bfdd5 100644 --- a/README.md +++ b/README.md @@ -160,9 +160,13 @@ myTimer.getDuration() // 18000 #### `.measureStart(label)` -Start a high-performance measurement with an associated label, you need to use +Start or continue a high-performance measurement with the associated label, you need to use the same label to stop measurement, so make sure you've saved it +#### `.measurePause(label)` + +Pause the measurement with the associated label + #### `.measureStop(label)` Stop the measument with the associated label, returns the number of elapsed ms @@ -171,12 +175,23 @@ Example: ```javascript -myTimer.measureStart('label1'); +var label = 'label1'; + +myTimer.measureStart(label); var a = []; for (var i = 10000000; i >= 0; i--) { a.push(i * Math.random()); }; -myTimer.measureStop('label1'); // 276 i.e. +myTimer.measurePause(label); + +// do something else + +myTimer.measureStart(label); +for (var i = 0, sum = 0; i < a.length; i++) { + sum += a[i]; +}; +var time_elapsed = myTimer.measureStop(label); + ``` > Note! diff --git a/src/timer.js b/src/timer.js index b17be69..40b98cf 100644 --- a/src/timer.js +++ b/src/timer.js @@ -105,12 +105,38 @@ } Timer.prototype.measureStart = function (label) { - this._.measures[label || ''] = +new Date + + if (!this._.measures[label || '']) this._.measures[label || ''] = [] + + this._.measures[label || '']._ = { + startTime: +new Date, + paused: false + } + return this + } + + Timer.prototype.measurePause = function (label) { + var measureArr = this._.measures[label || ''] + if (measureArr && !measureArr._.paused) { + measureArr.push(+new Date - measureArr._.startTime) + measureArr._.paused = true + } return this } Timer.prototype.measureStop = function (label) { - return +new Date - this._.measures[label || ''] + this.measurePause(label) + var arr = this._.measures[label || ''], + result = 0 + if (!arr) return result + + var len = arr.length + for (var i = 0; i < len; ++i) + result += arr[i] + + delete this._.measures[label || ''] + + return result } function end () { From 93ba0fc4b5ffbf608c3915b7a9130274d1377d2a Mon Sep 17 00:00:00 2001 From: Argon Zhou Date: Tue, 6 Sep 2016 10:22:21 +0800 Subject: [PATCH 2/2] trying --- src/timer.js | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/timer.js b/src/timer.js index 40b98cf..b267689 100644 --- a/src/timer.js +++ b/src/timer.js @@ -105,38 +105,42 @@ } Timer.prototype.measureStart = function (label) { + var measure - if (!this._.measures[label || '']) this._.measures[label || ''] = [] - - this._.measures[label || '']._ = { - startTime: +new Date, - paused: false + if (!this._.measures[label || '']) { + measure = this._.measures[label || ''] = { + value: 0, + } } + else measure = this._.measures[label || ''] + + measure.timeStamp = +new Date() + measure.paused = false + return this } Timer.prototype.measurePause = function (label) { - var measureArr = this._.measures[label || ''] - if (measureArr && !measureArr._.paused) { - measureArr.push(+new Date - measureArr._.startTime) - measureArr._.paused = true + var measure = this._.measures[label || ''] + if (measure && !measure.paused) { + measure.value += +new Date() - measure.timeStamp + measure.paused = true } - return this + return measure.value } - Timer.prototype.measureStop = function (label) { - this.measurePause(label) - var arr = this._.measures[label || ''], - result = 0 - if (!arr) return result - - var len = arr.length - for (var i = 0; i < len; ++i) - result += arr[i] + Timer.prototype.measureLap = function (label) { + return +new Date() - this._.measures[label || ''].timeStamp + } + Timer.prototype.measureStop = function (label) { + value = this._.measures[label || ''].value delete this._.measures[label || ''] + return value + } - return result + Timer.prototype.getTime = function (label) { + return this._.measures[label || ''].value } function end () {