由于没有找到有关egret性能测试的文章,决定自己动手测一下
测试方法
- 下载egret-examples-1.5.0.zip 拷贝其中的monkey.son和monkey.png
-
修改resource.json
-
新建一个egret工程
-
修改egretProperties.json中document_class为Test
-
新建一个Test.ts
-
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
class Test extends egret.DisplayObjectContainer { public constructor() { super(); this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this); } private onAddToStage():void { egret.Profiler.getInstance().run(); RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onResLoaded,this); RES.loadConfig("resource/resource.json","resource/"); RES.loadGroup("monkey"); } private random(a:number,b:number):number { return Math.round(a + Math.random() * b); } private onResLoaded():void { var data = RES.getRes("monkey_json"); var texture = RES.getRes("monkey_png"); for (var i = 0; i < 200; i++) { var monkey = new egret.MovieClip(data, texture); monkey.x = this.random(0, 480 - 100); monkey.y = this.random(0, 800 - 100); egret.MainContext.instance.stage.addChild(monkey); monkey.frameRate = 24; monkey.gotoAndPlay("attack"); } } } |
- 发布
1 |
egret publish {ProjectName} |
拷贝到自己服务器上用手机打开看看吧
说一下这边的测试结果
机型 | 个数 | 帧数 |
---|---|---|
ip5s | 200 | 45 |
ip5s | 2000 | 8 |
ip5 | 200 | 48 |
红米Note4.4.2 | 200 | 7 |
三星G Note4 4.4.4 | 200 | 57 |
官方的一条FAQ
为什么Egret开发的游戏在某些Android设备上特别卡?
在 Android 早期版本( 4.4 之前) ,Android WebView 并不 100% 支持 HTML5 特性,如 WebGL、PageVisibility 、 WebSocket 等。
Google 为了解决这些问题,在 4.4 版本中,完全删除了原有的 WebView ,将其替换为了 chromium 架构的新 WebView。
由于这个修改的工作量过大,在部分特性在尚未全部完成的情况下,Android 就发布了 4.4.2 版本作为过渡,这导致了部分特性在 4.3版本是存在的,但是4.4.2 反而丢失了。 其中我们遇到的情况就是 Canvas 硬件加速特性丢失。
在 Android 4.4.4 版本中,google 完全完成了 WebView的架构迁移,Canvas硬件加速特性被重新置入 WebView中。
由于 HTML5 游戏依赖于 Canvas 渲染,而是否存在硬件加速对渲染结果有几十倍的差异,所以 HTML5游戏在 Android 4.4.2 系统上卡顿的问题由于操作系统限制,几乎不可能在应用层解决。