在前不久的氪星人饭局上,我们曾探讨过未来移动客户端的趋势究竟是HTML 5(web app)还是原生应用(native app)。经过讨论大家发现给未来移动端到底是 native app 还是 web app 是趋势下定论基本无益,因为无论是原生应用还是web app都有各自的优势和问题。但是当时的讨论忽略了一个因素:速度。
5月份的时候Drew Crawford发表了一篇文章,web app很慢。文章出来之后受到了一些质疑,主要集中在以下三方面:
1) javaScript比原生代码慢的确是事实。但是不见得会影响到实际体验
2) 哪怕Javascript相对更慢,且影响体验,但是JS本身会变得更快,总有一天不再成为问题
3) 相对于服务器端的性能问题,移动端性能是个小问题
针对这些质疑,Drew Crawford随后发表长文为什么Web app会慢予以回应,文章得出的结论似乎很悲观,在中短期内(5-10年)web app都无法显著改善性能:
1)Javascript对于Web app来说是不可取的,因为速度太慢,而且影响体验。
根据测评,原生应用速度是JS Web app的5倍;JS Web app与IE8相当,而x86 C/C++(桌面应用)速度是JS Web app的50倍。
2)最可行的提速办法是将移动硬件性能提升到桌面硬件的水平,但是中短期内不太可能。
解决方案很明显,把ARM的速度提高10倍,快到可以与x86匹敌,那样的话无需做任何工作即可实现桌面JavaScript的性能!这个方案行不行得通取决于你对摩尔定律的信仰,是否相信3盎司电池能否支撑芯片的运作。
而TC的Jon Evans甚至认为也许永远都不可能了。其理由是因为受困于热量及功率损耗及根本性的量子限制,摩尔定律已经失效。作为过去50年最重要最强大的一股力量,摩尔定律主导的时代正在走向终结,几何级增长再也难以为继,尤其在移动设备上,同时实现更快、更小、更便宜的指数性变化越来越难。
3) 从目前来看,JS语言本身的速度并没有改善,而做编程语言的人说在目前的语言和API的条件下,Web app的速度永远也赶不上原生代码
4) 有垃圾回收对内存的需求是没有垃圾回收的5倍,但是性能却没有明显提升。Android有垃圾回收机制,iOS没有,所以299美元的Nexus 4内存是649美元iPhone 5的2倍。JavaScript不适合做对内存要求高的应用。
正如饭局闲话中大家的讨论一样,Web app在开发和分发上的优势是明显的,但是其入口不明显的劣势也是明显的。而如果在中短期内web app的性能都没有办法取得明显改善的话,会不会动摇移动开发者将来的路线选择呢?对于Drew Crawford的观点,你又如何看呢?欢迎大家讨论。