电子是台式机的闪光灯

为什么在Slack桌面应用程序中,最有可能有一个Xbox游戏控制器驱动程序能够工作,而使用Electron构建桌面应用程序的真正缺点是什么。

图片

根据探查器,在下面的屏幕快照中,Slack占用了几乎所有处理器资源。 我不知道他在那里做什么?

图片

发生这种情况时,该过程在后台启动。 我什至没有与Slack互动-我正在开会。 而且我注意到这一点仅仅是因为笔记本电脑的冷却系统的噪音。 这次重新启动Slack解决了问题。

但这对于Slack是正常的。 在后台,Slack通常消耗处理器的5%。 他在做什么? 我不知道

我敢打赌,Slack开发团队也不知道。 为了使客户端正常工作,他们必须编写几行代码? 我认为大约有5万。 也许十万 但是Slack并不是本机应用程序。 还是不是普通的本机应用程序。 它运行在Electron的顶部,这意味着在下载它时,您实际上下载了Google Chrome的完整副本( 而不是Chromium-大约Per​​。 )。 撰写本文时,Chrome包含1500万行未注释的代码 。 直接编码Slack不到下载量的1%。

Chrome本身仍然是猪。 他又大又复杂。 它使用RAM和处理器,就好像没有其他人要求它们一样,并大大减少了电池寿命。

您可以将Slack视为一个小型JavaScript程序,该程序可以在另一个Chrome操作系统(虚拟机)中运行,而您实际上运行该操作系统是使用IRC的类似物。 即使Chrome本身已经在运行,Electron上的每个应用程序也会部署自己的附加副本。

将Chrome称为操作系统并不夸张。 从代码行数来看,Chrome的大小几乎与Linux内核相同。 像Linux内核一样,它具有适用于各种硬件的API,包括OpenGL,VR,MIDI。 它包含SQLite的内置副本,内存管理系统和自己的任务管理器。 在macOS上,它甚至具有用于Xbox 360游戏控制器的USB驱动程序(我知道它在那里,因为我写了它。很抱歉。)

Slack是否包含我的Xbox控制器代码? Slack团队知道吗? 有人知道吗? Slack占用160 MB磁盘空间。 这是《指环王》的约70张未压缩副本。 我计算机上的其他Electron应用程序是Spotify(200 MB)和Atom(260 MB)。 我首先使用软盘安装了Linux。 刻录这三个简单的应用程序需要450张软盘。 它们在一起的重量就像一个Ubuntu桌面发行版。 我认为其中包含一个IRC客户端,一个文本编辑器和一个音乐播放器。 完整的操作系统, 用户环境和Web浏览器。

您会说磁盘空间现在一文不值。 是的,但不是RAM。 全新的闪亮MacBook Pro默认情况下配备8 GB的RAM。 由于电池寿命的原因,您不能购买容量超过16 GB的型号。 现在,Slack在笔记本电脑的内存中介于300 MB到1 GB之间:

图片

来吧 这是一个文本共享应用程序。

始终缺少的另一件事是电池电量。 现代处理器通过在任何可能的时候停止(没有任务时)来节省电量。 电源管理的诅咒是程序经常使用处理器达百分之几。 它们使处理器不断唤醒,超频并再次停止。 这是销毁宝贵电池电量的完美方法。 如果有人有时间(只要让他们运行)-我会看到Spotify,Slack和Atom减少了现代笔记本电脑的电池寿命。 这太不可思议了。

图片

而且,Spotify无法播放音乐。 他只是...跑步。 他做了他神秘的铬事务。 而且他还使用了处理器的百分之几。 只是存在。

(在写此说明时,Chrome决定报复使用处理器的100%资源。在内置的任务管理器中,这是一个神秘的“浏览器”过程。感谢Chrome。)

老实说,浏览器之外的JavaScript并不是问题。 实际上,我认为现代网络提供的API比现有的操作系​​统API更好。 我们必须使用它们。

但是,我们需要找到机会在台式机平台上使用这些新范例(React和他的朋友),而不必运行更多鲜活的Chrome副本。 我只是对您的应用程序不太感兴趣,无法证明启动另一个Chrome实例。 对于开发人员来说,很容易陷入陷阱,感觉到您的应用程序或网站是人类的礼物,也是他们可以做的最重要的事情。 为什么不利用多余的资源呢? 我们需要与这种思维方式作斗争。 这样的道路通往一个我们无法拥有美好事物的世界。 这样的道路通往了一个世界,在这个世界中,我们的笔记本电脑电池需要增加才能为处理器供电,从而使它们执行更多无用的工作。 这样的路径导致了Shockwave Flash和手机的返回,这些手机在口袋中变热,当我们要使用它们时,它们会神秘地放电。 与电池充电和关闭应用程序有关的偏执一经我们与他们合作完成。 (我看着你,iTunes和Mischief。)
只是说电子否
开发人员,请勿让您的朋友在Electron上编写应用程序。 如果要使用JS和React,请使用React Native 。 就像Electron一样,但是您不必将Chrome的副本分发给所有用户,也不必运行另一份Chrome即可使用您的应用程序。 事实证明,现代操作系统已经具有良好而快速的UI库。 用它们,笨蛋!

另一个可悲的事实是,甚至许多开发人员也不知道他们的计算机上正在发生什么。 他们使用Slack,但不知道它是多少。 作为开发人员,您有责任了解所有这一切。 练习 探索性能分析工具。 使用iStatMeters或免费的类似产品之一。 您无法改善无法衡量的内容。

也许我们应该购买速度较慢的计算机来感受这种痛苦。 Facebook有意限制其办公室每周一次的Internet速度,以同情他们在第三世界其他国家/地区的用户(khe-Australia-khe)。 也许,作为开发人员,我们也应该在计算机上执行此操作,例如,使代码的运行速度比平时慢得多,以便使自己适应性能直觉。 几年前,我把笔记本电脑放了一个漫长的周末。 我没有去追随他,而是决定插入我的Raspberry Pi(该死的慢速第一代)并将其用于开发。 突然,我的普通i7笔记本电脑上立即执行的许多操作变得非常缓慢。 我花了一个周末使我的工作流程更加顺畅。 所有这些性能调整也可以延续到常规设备上。 将Raspberry Pi的启动时间从5秒减少到2倍,这真是令人难以置信的飞跃。 此修复程序也从0.5秒跃升为0.2,或类似的水平。 这对于用户来说仍然非常明显。 0.5秒的开始时间足够短,以至于在开发过程中都不会错过这个事实,但是下降到0.2显然感觉要快得多。

用户 :请抱怨程序缓慢。 在院子里2016( ...-约Per。 ) 我们口袋里装着超级计算机。 程序变慢是不可接受的。

开发人员 :性能至关重要。 记忆很重要。 我不在乎您是舞池中最迷人的女孩,Slack。 我一离开办公室就关闭你。 如果有机会,我会立即从计算机中删除您。 慢是一个错误。 最快的程序是您不运行的程序。 因此,请停止将整个Chrome嵌入到您的应用程序中。

以及您所有的Web开发人员:学习C或Rust或类似的东西。 您的程序在计算机上运行 。 除非您知道计算机的工作原理,否则您将注定要失败。 离开我的草坪,直到发现! *拳头*

是的,请阅读有关肥胖部位危机的信息Habr上的翻译 )。 这很有趣。 很伤心 而且非常重要。

编辑:Spotify实际上使用Chromium嵌入式框架,而不是通过Electron启动。 但是他仍然嵌入了Chrome。 当我写这篇文章时,我并不知道这一点,但是我并没有忘记关于最终性能的话。

Source: https://habr.com/ru/post/zh-CN427211/


All Articles