const Counter = require('./counter');
/* 独立的计时器类 */
let PerfCounter = cc.Class({
name: 'cc.PerfCounter',
extends: Counter,/* 继承Counter */
ctor(id, opts, now) {
// DISABLE
// this._idstart = `${id}_start`;
// this._idend = `${id}_end`;
/* 构造函数,传递key,value是一个object,now 是当前时间*/
this._time = now;
},
start(now) {
this._time = now;
/* // DISABLE:长时间运行会导致性能下降 */
// DISABLE: long time running will cause performance drop down
// window.performance.mark(this._idstart);
},
end(now) {
/* 调用end的时候,当前距离浏览器打开时间时间,减去上一次的时间,获取差值 */
this._value = now - this._time;
// DISABLE:长时间运行会导致性能下降
// DISABLE: long time running will cause performance drop down
// window.performance.mark(this._idend);
// window.performance.measure(this._id, this._idstart, this._idend);
this._average(this._value);//增加样本
},
/* 全局搜索,未发现调用 */
tick() {
this.end();
this.start();
},
frame(now) {
/* 当前浏览器打开到现在的时间差,赋值 */
let t = now;
/* 当前时间和上次时间的差值 */
let e = t - this._time;
this._total++;
let avg = this._opts.average || 1000;
if (e > avg) {
this._value = this._total * 1000 / e;
this._total = 0;
this._time = t;
this._average(this._value);//增加样本
}
}
});
/* 导出PerfCounter */
module.exports = PerfCounter;
CocosCreator 源码 perf-counter.js详解
最新推荐文章于 2024-05-16 15:54:17 发布