移动Web应用的性能及其未来趋势

简介: 转自:http://www.infoq.com/cn/news/2013/07/mobile-web-performance在一篇深入的实质性文章中,某iOS开发公司的老板Drew Crawford表示他认为目前移动Web应用运行迟缓,而且并不指望能在不久的将来看到重大改善,并列出了以上观点的全部原因。

转自:http://www.infoq.com/cn/news/2013/07/mobile-web-performance

在一篇深入的实质性文章中,某iOS开发公司的老板Drew Crawford表示他认为目前移动Web应用运行迟缓,而且并不指望能在不久的将来看到重大改善,并列出了以上观点的全部原因。该文章是此前某篇博客文章的后续之作——在那篇文章中,他指出:与桌面系统中的表现相比,JavaScript在移动设备上的性能有着量级上的差距。由于那篇文章遭到了严重的批评,因此Drew撰写了这篇更详细的文章以作为回应。对于糟糕的性能和缺乏改善由此归为以下三类:

1.      处理器性能差异:移动设备ARM处理器vs.桌面x86处理器

2.      JavaScript引擎的性能趋势

3.      垃圾回收方面的内存消耗

Drew所列出的两个瓶颈在于CPU和内存。其中,CPU密集型任务涉及两方面:CPU的能力和执行效率。Drew指出,现阶段x86处理器比iPhone和高端Android设备使用的ARM处理器快十倍

虽然不是硬件工程师,但我曾经为一家主流半导体公司工作,那里的人们告诉我,现在性能主要依赖于工艺水平(例如,他们用“纳米”来衡量的那些东西)。iPhone5能够具有令人瞩目的性能,很大程度是由于工艺水平从45纳米提升到32纳米——接近1/3的提升。不过要想再次获得这样的效果,苹果必须将其工艺水平进一步提升到22纳米。

由于大部分缩减晶体管尺寸方面的知识和投入都掌握在Intel手中,Drew认为:在可以预见的未来,ARM不大可能迎头赶上;实际上,更大的可能是Intel生产一款x86处理器,并杀入低能耗市场与ARM进行竞争,而不是ARM弥补性能差距。

有关性能的第二个方面是效率。CPU周期的利用率如何,也即是,机器指令获得JavaScript代码生成指令的效率如何?

这也正是许多能干的软件工程师马失前蹄的地方。其思维过程类似于这样:JavaScript已经变快了,而它将继续变快!

这句话的前半部分正确。JavaScript的速度确实得到了显著提升。但是对后半句来说,我们已经身处JavaScript的顶峰,从今以后它的速度将不会再有大幅提升了。

下面是Chrome v8在我的Mac上(能够运行的最早版本,来自2010年12月),与现在的v26进行对比的结果。


看不出什么区别?这是因为本来就没有多少差别。对于CPU密集型JavaScript程序来说,近来没有任何重大进步。

而如果说有人觉得现在访问Web比2010年快多了,那很可能是因为电脑性能的进步,而与Chrome的改进无关。

在Drew看来,近期JavaScript的性能没有显著提升的原因非常明显:

问题在于,JavaScript的JIT化是一个有着60年历史、并经历了长达60年研究的理念,期间人们使用各种可以想象的编程语言进行了成千上万次实现,以验证这是一个好的想法。但是现在我们已经完成了这一工作,并且榨干了它的价值。兄弟们,就是这样,演出结束了。或许我们可以开始寻找适用于下个60年的另一条妙计。

移动Web的第二条制约因素是内存。内存使用方面也有两大因素:可用的内存总量,与内存使用效率

尽管现代移动设备拥有相当数量的内容(一般为512MB或1GB),然而操作系统限制每个应用的使用量。操作系统自身消耗了许多内存,此外还有许多同时运行的应用(多任务)也在消耗内存:

基本上,当iPhone4S上的应用使用40MB内存时会出现警告,而消耗213MB内存时应用进程会被杀死。在iPad 3上,警告出现在应用消耗400MB内存时,而当消耗量达到550MB时系统将杀死应用进程。

Drew提到,以iPhone 4S的分辨率,单张照片包含的位图数据将达到30MB。这意味着最多在内存里存放7张照片,超过这一数量操,作系统就会因为应用耗尽了它所享有的内存而杀死它的进程。因此,如果某个应用用来处理图形或视频等多媒体文件,那么它必须非常谨慎地规划在内存中存放哪些内容,以及存放多长时间——因为内存是非常有限的

内存方面的第二个因素在于效率。JavaScript带有垃圾回收机制,因此开发者无需手动管理内存——这一特性正是为了减轻开发者的工作。然而,内存回收是有其代价的,而且这种代价在内存受限的环境下呈指数增长。


这张图意味着“如果我们拥有的内存是我们真正需要的6倍,那么一切安好。但如果少于需要的4倍那可就惨了。”

实际上,在内存受限环境中,垃圾回收机制的性能呈指数下降。如果我们编写Python、Ruby或JS应用并在桌面计算机中运行,那么很可能整个体验都处在图表右侧,而永远不会遇到缓慢的垃圾回收器。不过,让我们在图表左侧花些时间,看看我们需要面对的其他问题。

这一表现或许可以解释,为何苹果永远不会让iOS上的Objective-C带有垃圾回收器,而是用ARC(同时在iOS和MAC中出现)来代替它。

虽然Drew在文章中列出了一些有趣的内容,但就像Brendan EichTweeter所说的一样,不是所有的应用都是CPU/内存密集型的。只有一些特定类型的应用会遇到这些问题,例如游戏和多媒体应用。尽管如此,对任何有兴趣了解移动Web性能的人来说,Drew万言书依旧值得一读。

查看英文原文:The Current and FuturePerformance of the Mobile Web

目录
相关文章
|
7月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
存储 监控 安全
如何在Python Web开发中确保应用的安全性?
如何在Python Web开发中确保应用的安全性?
|
5月前
|
编解码 缓存 监控
如何提高类Web开发范式的性能?
如何提高类Web开发范式的性能?
|
6月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。该方案设计目标是实现通用性,适用于各种网络架构和业务场景。
199 1
|
7月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
284 7
|
10月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
314 19
|
11月前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
490 17
使用Web浏览器访问UE应用的最佳实践
|
缓存 JSON 监控
如何在项目中保证 Web 组件化的性能
保证 Web 组件化的性能需要从多个方面入手,综合运用各种优化方法和策略。通过持续的优化和改进,能够提高组件化的整体性能,为用户提供更好的体验,同时也有助于提高项目的开发效率和质量。
282 64
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
219 61
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
294 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙

热门文章

最新文章