【发布时间】:2015-03-10 00:21:35
【问题描述】:
我一直在玩easeljs,但我发现性能开始下降。在我的示例中,Chrome 大约需要 3 秒才能到达这一点,而 Safari 需要 25 秒,而 Firefox 无处不在。
问题:
- 我做错了什么?
- 或者这是我应该从easeljs获得的性能提升?
示例 为了演示我正在体验的性能冲击,我在循环上创建了一个简单的圆形重绘动画,但帧速率很快开始下降。如果我恢复到纯画布 API 调用,那么它会恢复性能。
下面是我重绘中选择画圆方法的关键sn-p:
if ( counter.fps > 60) {
circle.graphics.beginFill('green')
circle.graphics.drawCircle(0,0, w / 10)
circle.graphics.endFill();
stage.update();
} else {
context.beginPath();
context.arc(circle.x, circle.y, w / 10, 0, 2 * Math.PI, false);
context.fillStyle = "darkred";
context.fill();
}
查看这个 jsfiddle 的演示: http://jsfiddle.net/AshCoolman/5xYxM/9/
我尝试了类似结果的变体:
- requestAnimationFrame(和一个 pollyfill)
- 帧率变慢
(粗略)性能时间表(OSX 10.8.2 on mid2012 macbook air)
Chrome v26.0.1410.43
- 0-3s = 90fps
- 3s = fps 开始下降
- 6s = fps 达到 60fps
Safari v6.0.2 (8536.26.17)
- 0-20s = 90fps
- 20s = fps 开始下降
- 35s = fps 达到 60fps
Firefox v20
- fsFiddle 托管:完全不稳定
- 本地托管:与 Chrome 的性能非常相似,但更不稳定
【问题讨论】: