比性能提升更有趣的是每秒帧数fps的绝对值。一旦动画超越了每秒30帧,你就越过了模拟电影的每秒帧数(24fps),可以获得视觉性能的期望值。到达60fps时,你的GPU加速质量就到达了黄油曲线部分。
真实的性能:垃圾回收机制、动态语言及其它
我们希望通过前文关于移动Web应用性能的铺陈来说明一些(性能)问题,以及揭示几个“神话”。详述如下:
- JavaScript性能持续快速增长,胜似某国GDP
- JavaScript性能的提升是通过软、硬件的同时优化
- 性能提升是件“大好事”,但是Javascript 的CPU性能对很多移动Web应用的性能无能为力、可有可无。
- 好消息是其它影响移动Web应用的部分也得到了大幅提升,包括DOM的操作速度、Canvas和SVG.
尽管咱们可以借助高速摄像头来观察(这些性能变化),但所有移动Web开发者都清楚的了解,自Android 2.1以降,动画、过场切换以及属性的修改等性能都得到了极大的提升,而且在此后的每次升版中,均有超越前作的表现。
至此我们已经纠正了一些错误的观点,现在我们汇集到一起并真正的驳斥一下。最近一次我们听到周围有人断言,移动web app将总是很慢,因为JavaScript这种动态语言的垃圾回收会伤及性能。这其中有一定的实情。使用类似Sencha Touch之类的框架, 将DOM内容动态生成的一个好处,就是我们可以管理对象的创建与析构,就像在某个层面,在一个浏览器上的特定的UI组件上下文之内,我们管理事件一样。例如,这使得我们可以能够通过回收DOM内容,调节事件和优化行动等等,提供60fps 的性能体验给那些以数据为中心的无穷内容(网格、列表、旋转木马)。
如果没有这种程度的迂回方法,将会很容易制造出很差的移动web app性能体验——就像Facebook的第一代移动web app。我们觉得写在UI框架基础之上的应用,如jQuery Mobile,与潜在的DOM联系的过于紧密,在可预见的未来将会持续承受性能问题。
整体归纳
文中提到了大量的信息和不同的观点,在这里为大家总结一下。如果您是一位开发者,希望从中获得一些启发:
- 移动平台的速度不及电脑的1/5 — 较慢的CPU,还有内存和图形处理方面的限制。这些都是无法改变的事实。
- 移动端的JavaScript+DOM的存储速度逐步加快,但是你始终对待iPhone5就像08年的1.0版本的谷歌浏览器一样 (即比电脑平台的IE8快5-10倍)。
- 随着GPU的加速和软件的优化,图形处理方面也得到了飞速的发展。已经能够实现30帧每秒的动画。
- 垃圾回收机制和平台渲染的问题仍然困扰着你,基本上是用一个抽象的框架像Sencha Touch来达到最佳性能。
- 利用远程调试和性能监控可以看出移动网络平台: 谷歌浏览器对安卓提供了一个帧数计数的支持,而且这个边界会告诉你什么时候计数器溢出,还有移交GPU和计算结构被加载的次数等功能。
我们希望在查看性能数据的时候始终能够找到一些除此之外的有用秘籍。我要感谢在Sencha的每一个人促就了这部秘籍,包括审查和发起大量连接到浏览器做性能优化的Ariya Hidayat 和在Sencha Touch上作出详细关于抽象和性能优化的Nguyen
Michael Mullany著
Michael Mullany是Sencha的CEO。他在非常有影响力的硅谷公司Netscape, Loudcloud和 VMware担当过各种产品总监和市场总监的角色。他拿到了斯坦福大学工商管理硕士学位和哈佛大学经济学学士学位