Mobile 为什么HTML/Web UI响应比本机UI慢?
我不明白,为什么HTML/Web UI响应比WinForms/WPF/Android View/Native UI慢 与Web UI的CSS、DOM和javascript事件相比,本机UI还具有样式、元素嵌套和事件 事件响应时间包括:焦点更改、下拉、滚动、动画移动、动画大小调整等 DOM树的插入/替换也很慢,在android 4.0的google chrome中插入10000个字符的html需要100毫秒,而解析其模板只需要20毫秒(jQuery微模板) 我认为,减速事件响应的最大因素可能是:Mobile 为什么HTML/Web UI响应比本机UI慢?,mobile,user-interface,web,response,native,Mobile,User Interface,Web,Response,Native,我不明白,为什么HTML/Web UI响应比WinForms/WPF/Android View/Native UI慢 与Web UI的CSS、DOM和javascript事件相比,本机UI还具有样式、元素嵌套和事件 事件响应时间包括:焦点更改、下拉、滚动、动画移动、动画大小调整等 DOM树的插入/替换也很慢,在android 4.0的google chrome中插入10000个字符的html需要100毫秒,而解析其模板只需要20毫秒(jQuery微模板) 我认为,减速事件响应的最大因素可能是:
在ios浏览器中,应用程序线程可以直接调用ui硬件线程。如果Web ui完全由客户端的JavaScript实现,那么与WinForms/Native ui的区别将很小 但是,在大多数情况下,Web UI会向Web服务器触发一些Web请求,然后它必须通过以下步骤来实现与WinForms/本机应用程序相同的效果:
Web应用程序(如ASP.NET)是预编译的。此步骤的时间复杂度可能非常接近Windows应用程序
当它返回结果并更新UI时,它可以是简单的二进制数据结构(不需要在标记中),并且不回复要呈现到屏幕上的其他应用程序(浏览器) 最后,WinForms/本机应用程序通常可以完全控制维护多个线程以逐步更新UI,而Web应用程序无法直接控制该类型的服务器端资源 更新:
当我们比较Web应用程序和使用相同Web服务的Windows/WPF(或本机)应用程序以部分更新其UI时 两个UI应以可忽略的速度差进行响应和刷新。二进制和脚本执行以响应和刷新UI之间的实现差异几乎为零。
两个UI都不需要重建控件树并刷新整个外观。在相同的条件下,它们可以具有相同的CPU优先级、内存/虚拟内存缓存,以及进程/线程级别上相同/关闭的内核对象和GDI句柄数。
在这种情况下,正如您所描述的,应该几乎没有视觉上的差异 更新2:
实际上,Web和Windows应用程序中的事件处理机制是相似的。DOM有事件冒泡。类似地,MFC具有命令路由;Winforms有它的事件流;WPF有事件冒泡和隧道等。其思想是,UI事件可能并不严格属于一个控件,而控件可以通过某种方式声明事件已“处理”。对于标准控件,焦点更改、文本更改、下拉、滚动事件对于Web和Windows应用程序都应该具有类似的客户端响应时间。
从性能上看,渲染是最大的区别。Web应用程序对“设备上下文”的控制有限,因为网页由外部应用程序(Web浏览器)托管。Windows应用程序可以使用GPU资源(如WPF)实现动画效果,并通过部分刷新“设备上下文”加快渲染速度。这就是为什么HTML5Canvas让Web开发人员兴奋不已,而Windows游戏开发人员已经使用OpenGL/DirectX超过10年了 更新3:
每个Web浏览器引擎()都有自己的呈现DOM、CSS的实现;和(CSS)选择器的实现。移动网页中的元素并调整其大小会改变DOM、CSS(树)设置。选择器和渲染性能在很大程度上取决于Web浏览器引擎