为什么在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。 当我写这篇文章时,我并不知道这一点,但是我并没有忘记关于最终性能的话。