Egret社区
本题已加入常见问题汇总 » 性能优化最佳实践,更多性能优化最佳实践相关的话题欢迎关注讨论



开启Profiler性能测试

找个地方写上 egret.Profiler.getInstance().run();开启性能优化。
例如,默认工程中可以写这里:
private onAddToStage(event:egret.Event){
//性能测试
egret.Profiler.getInstance().run();...
}


左上角测试显示结果说明:
draw:100 //绘图的数量,使用WebGL这个数不准确
cost: 0,1,10,6   //业务逻辑开销,引擎开销,GPU开销,游戏位图渲染(不太确定)
FPS:60   //每秒传输帧数

8:14日 补充 。来着官方技术人员Wander(我们亲切的称呼他为弯弯的)回复:第四个参数已经废弃了,因为他不是很精确。理论上是真实渲染开销,采样不是很准。
性能优化
一般我们的游戏会大量的消耗在GPU,渲染中。
提高性能的不二法门就是减少绘图
比如,剔除不显示的内容。
虽然你的内容没有在界面里出现,但注意,引擎依然会绘制那个内容。这点可以从draw这个参数看出来。
设置 对象的visible=false,就不会渲染。
做一些判断将没有在显示范围内的,或已经被遮盖的内容设置成隐藏是提升性能很好的方式。
但这会损耗逻辑性能,但消耗可以忽略不计。
可以多采用逻辑消耗代替GPU消耗的方式提高性能。

源码位置:
egret-core / src / egret / utils / Profiler.ts
输出部分源码,输出的相关参数的方法:
        private update(frameTime:number) {
            this._tick++;
            this._totalDeltaTime += frameTime;
            if (this._totalDeltaTime >= this._maxDeltaTime) {
                var drawStr = (this._preDrawCount - 1).toString();
                var timeStr = Math.ceil(this._logicPerformanceCost).toString() + ","
                    + Math.ceil(this._updateTransformPerformanceCost).toString() + ","
                    + Math.ceil(this._renderPerformanceCost).toString() + ","
                    + Math.ceil(egret.MainContext.instance.rendererContext.renderCost).toString();
                var frameStr = Math.floor(this._tick * 1000 / this._totalDeltaTime).toString();

                this._txt.text = "draw:" + drawStr + "\n" + "cost:" + timeStr + "\n" + "FPS:" + frameStr;

                this._totalDeltaTime = 0;
                this._tick = 0;
            }
            this._preDrawCount = 0;
        }






分享到 :
9 人收藏

4 个回复

倒序浏览
wawj025  登堂入室 | 2014-8-12 20:27:09
楼主,在用TOUCH_MOVE事件的时候,帧数也有下降,有没什么优化办法?
songsharp  斑竹 | 2014-8-14 11:10:46
这个是两回事,事件消耗的是第一个,逻辑消耗问题。如果你的move代码消耗性能,只能优化你的代码。
还有,可以做一个间隔判断,就是不是每一个move都执行,而是10个move执行一次,这样不就减少了9/10的代码运行量了。
zjkdragon  登堂入室 | 2014-10-13 18:52:01
楼主我的面板被后边add的容器盖住了请问如何能给面板调整到最上层啊
Once  斑竹 | 2014-12-26 10:46:55
感谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部