本文由 简悦SimpRead 转码,原文地址 www.theregister.com
巧克力工厂的跨平台框架似乎在努力制作高效的桌面软件
谷歌的Flutter跨平台应用程序框架似乎有一个思维问题:在某些情况下,Flutter桌面应用程序会消耗太多的处理能力。
多少才算过多?试试额外的6%到10%的CPU使用率,只是为了以原生macOS应用的风格重现光标的眨眼。这比2019年报告的100%CPU使用率有了改进,尽管那是在Flutter桌面应用支持处于alpha阶段的时候。
这在移动设备上将是一个亮点,用户不会容忍那些让他们的手机因电池耗尽而变黑的应用。但事实证明,能源效率低下并不是Flutter安卓和iOS构建中的常见问题,尽管随着Flutter的成熟,这也是一个令人担忧的问题。对于Flutter开发者来说,移动设备上更紧迫的问题是仍在努力减少 "jank"--由着色器编译产生的滞后。
对于桌面应用程序,特别是在插入式设备上,过度的资源消耗往往被容忍,作为对开发者/用户便利性的一种交换,这可以从许多基于Electron的应用程序正在进行的奢侈的生活方式中推断出来,它们相当随意地使用内存和CPU。
但是Flutter的卖点之一是它可以提供比Electron框架或类似的跨平台技术更小、性能更强的应用程序。
Flutter为开发者提供了一套工具,用于创建可在安卓、iOS、Windows、macOS或Linux、网络和嵌入式设备上运行的单一代码库的应用程序构建。它通过严重依赖Skia来实现,Skia是一个用C/C++编写的图形渲染引擎,使用设备的CPU或GPU来自行绘制应用界面,而不依赖原生平台接口库。
但通过独立处理合成问题,Flutter放大了编写资源优化代码的挑战。Flutter对原生库的回避使其失去了原生平台代码所能获得的一些效率。
对于Flutter来说,闪烁光标的CPU税已经公开了一年多的GitHub问题。
截至2020年8月,谷歌的高级软件工程师Kaushik Iska说Flutter正在按预期工作,Flutter团队可能会考虑在以后的日期进行改进。
这个日期还没有到来,但有迹象表明它可能很快就会到来。谷歌的一位发言人告诉_The Register_,"Flutter桌面支持仍在进行中,现在判断性能还有点早"。
的确,桌面版Flutter仍被指定为测试版软件,而且有充分证据表明谷歌的工程师一直在改善性能。
我们还被告知,光标问题并不反映其他场景下的资源使用情况,Flutter团队打算在某个时候修复或缓解这个问题。
然而,重新设计将需要扩展到Flutter的游标税之外。也有报告称在Linux构建中内存使用量过大,这将需要修复,以使Flutter适用于物联网应用场景。还有Flutter重绘每一个动画小部件的做法,而不是只重绘屏幕的一部分--这一点可能很快会得到改善。
创建一个框架来统治它们并不容易。不过,编写本地操作系统代码也不容易。®