Electron est un flash pour ordinateur de bureau

Pourquoi, dans l'application de bureau Slack, il y a très probablement un pilote pour que le contrôleur de jeu Xbox fonctionne et ce qui est vraiment mauvais d'utiliser Electron pour créer des applications de bureau.

image

Dans la capture d'écran ci-dessous, selon le profileur, Slack occupe presque toutes les ressources du processeur. Je me demande ce qu'il fait là-bas?

image

Le processus a été lancé en arrière-plan lorsque cela s'est produit. Je n'ai même pas interagi avec Slack - j'étais en réunion. Et je l'ai remarqué uniquement à cause du bruit du système de refroidissement de mon ordinateur portable. Le redémarrage de Slack cette fois a résolu le problème.

Mais c'est normal pour Slack. En arrière-plan, Slack consomme souvent 5% du processeur. Que fait-il? Je n'en ai aucune idée.

Je parie que l'équipe de développement de Slack ne sait pas non plus. Combien de lignes de code ont-ils dû écrire pour faire fonctionner leur client? Je pense que 50 000 environ. Peut-être 100 000. Mais Slack n'est pas une application native. Ou pas une application native ordinaire. Il fonctionne au-dessus d' Electron , ce qui signifie que lorsque vous le téléchargez, vous téléchargez en fait une copie complète de Google Chrome ( plutôt, Chromium - environ Per. ). Chrome au moment de la rédaction du présent document contient 15 millions de lignes de code qui ne sont pas des commentaires. Code directement Slack représente moins de 1% de la charge.

Chrome lui-même est toujours un porc. Il est grand et complexe. Il utilise la RAM et le processeur comme si personne d'autre ne les revendique et réduit considérablement la durée de vie de la batterie.

Vous pouvez considérer Slack comme un petit programme JavaScript qui s'exécute dans un autre système d'exploitation Chrome (machine virtuelle) que vous exécutez pour utiliser essentiellement l'analogue d'IRC. Même si Chrome lui-même est déjà en cours d'exécution, chaque application sur Electron déploie sa propre copie supplémentaire.

Et appeler Chrome un système d'exploitation n'est pas une exagération. Par le nombre de lignes de code, Chrome a presque la même taille que le noyau Linux . Comme le noyau Linux, il dispose d'une API pour divers matériels, dont OpenGL, VR, MIDI. Il contient une copie intégrée de SQLite, un système de gestion de mémoire et son propre gestionnaire de tâches. Sur macOS, il a même un pilote USB pour le contrôleur de jeu Xbox 360. (Je sais qu'il est là parce que je l'ai écrit. Désolé.)

Slack contient-il mon code pour la manette Xbox? L'équipe Slack est-elle au courant? Quelqu'un le sait-il même? Slack occupe 160 Mo d'espace disque. Il s'agit d'environ 70 exemplaires non compressés du Seigneur des anneaux. Les autres applications Electron sur mon ordinateur sont Spotify (200 Mo) et Atom (260 Mo). J'ai d'abord installé Linux à l'aide de disquettes. Il faut 450 disquettes pour graver ces trois applications simples. Ensemble, ils pèsent comme une distribution de bureau Ubuntu. Ce qui, je pense, contient un client IRC, un éditeur de texte et un lecteur de musique. Système d'exploitation complet, environnement utilisateur et navigateur Web.

Vous direz que l'espace disque est désormais sans valeur. Oui, mais pas de RAM. Le tout nouveau MacBook Pro brillant est équipé de 8 Go de RAM par défaut. En raison de la durée de vie de la batterie, vous ne pouvez pas acheter un modèle avec plus de 16 Go. Et en ce moment, Slack se situe entre 300 Mo et 1 Go dans la mémoire de mon ordinateur portable:

image

Allez. Il s'agit d'une application de partage de texte.

Une autre chose qui manque toujours est la batterie. Les processeurs modernes économisent l'énergie en s'arrêtant autant que possible (lorsqu'il n'y a pas de tâches). La malédiction de la gestion de l'alimentation réside dans les programmes qui utilisent constamment le processeur pour quelques pour cent. Ils font que le processeur se réveille constamment, overclocke et s'arrête à nouveau. C'est le moyen idéal pour détruire la précieuse puissance de la batterie. Si quelqu'un a le temps (laissez-le simplement fonctionner) - je verrais combien Spotify, Slack et Atom réduisent la durée de vie de la batterie sur les ordinateurs portables modernes. C'est incroyable.

image

Et non, Spotify ne joue pas de musique. Il est juste ... en train de courir. Il fait ses mystérieuses affaires de chrome. Et il utilise également quelques pour cent du processeur. Juste pour exister.

(En rédigeant cette note, Chrome a décidé de prendre 100% des ressources du processeur en représailles. Dans le gestionnaire de tâches intégré, c'était un mystérieux processus de «navigateur». Merci, Chrome.)

Pour être honnête, JavaScript en dehors du navigateur n'est pas un problème. En fait, je pense que les API fournies par le Web moderne sont bien meilleures que les API existantes du système d'exploitation. Nous devons les utiliser.

Mais nous devons trouver l'opportunité d'utiliser ces nouveaux paradigmes (React et ses amis) sur les plates-formes de bureau sans avoir à exécuter des copies plus sanglantes de Chrome. Je ne suis tout simplement pas tellement intéressé par votre application pour justifier le démarrage d'une autre instance Chrome. Il est facile pour un développeur de tomber dans le piège du sentiment que votre application ou votre site est un cadeau pour l'humanité et la chose la plus importante qu'il puisse faire. Pourquoi ne pas profiter des ressources excédentaires? Nous devons lutter contre cette façon de penser. Un tel chemin mène à un monde où nous ne pouvons pas avoir de bonnes choses. Un tel chemin mène à un monde où les batteries de nos ordinateurs portables doivent se développer pour fournir de l'énergie aux processeurs afin qu'ils effectuent un travail encore plus inutile. Un tel chemin mène au retour de Shockwave Flash et des téléphones qui chauffent dans les poches, qui se déchargent mystérieusement quand on veut les utiliser. Paranoïa par rapport à la charge de la batterie et fermeture des applications dès que nous avons fini de travailler avec eux. (Je vous regarde, iTunes et Mischief.)
Dites simplement Electron NON
Développeurs, ne laissez pas vos amis écrire des applications sur Electron. Si vous souhaitez utiliser JS et React, utilisez React Native . C'est comme Electron, mais vous n'avez pas besoin de distribuer une copie de Chrome à tous les utilisateurs et d'exécuter une autre copie de Chrome pour utiliser votre application. Il s'avère que les systèmes d'exploitation modernes disposent déjà de bibliothèques d'interface utilisateur bonnes et rapides. Utilisez-les, fous!

Un autre fait triste est que même de nombreux développeurs n'ont aucune idée de ce qui se passe sur leurs ordinateurs. Ils utilisent Slack, mais ne savent pas combien il est gourmand. C'est votre responsabilité, en tant que développeur, de savoir tout cela. Pratique. Explorez les outils de profilage. Utilisez iStatMeters ou l'un des analogues gratuits. Vous ne pouvez pas améliorer ce que vous ne mesurez pas.

Nous devrions peut-être acheter des ordinateurs plus lents pour ressentir la douleur. Facebook a délibérément limité la vitesse d'Internet dans ses bureaux une fois par semaine, afin de sympathiser avec leurs utilisateurs dans d'autres pays du tiers monde (khe-Australie-khe). Peut-être qu'en tant que développeurs, nous devrions également le faire avec nos ordinateurs, par exemple, pour que le code fonctionne beaucoup plus lentement que d'habitude afin de nous armer d'une intuition de performance. Il y a quelques années, j'ai laissé mon ordinateur portable au travail pour un long week-end. Au lieu de le poursuivre, j'ai décidé de brancher mon Raspberry Pi (sacrément lente 1ère génération) et de l'utiliser pour le développement. Soudain, les nombreuses opérations qui ont été effectuées instantanément sur mon ordinateur portable i7 normal sont devenues terriblement lentes. Et j'ai passé le week-end à rendre mon flux de travail plus fluide. Tous ces réglages de performances sont également appliqués aux appareils standard. Réduire le temps de lancement de 5 secondes à 2x sur le Raspberry Pi a fait un bond incroyable. Ce correctif est également devenu un saut de 0,5 seconde à 0,2, ou quelque chose comme ça. Ceci est encore très visible pour l'utilisateur. Un temps de démarrage de 0,5 seconde est suffisamment court pour passer à côté de ce fait pendant le développement, mais une baisse à 0,2 semble évidemment beaucoup plus rapide.

Utilisateurs : veuillez vous plaindre des programmes lents. Dans la cour 2016 ( ... - env. Per. ). Nous transportons des superordinateurs dans nos poches. Il est inacceptable que les programmes soient lents.

Développeurs : les performances sont importantes. La mémoire compte. Peu m'importe que vous soyez la fille la plus attirante sur la piste de danse, Slack. Je vous ferme dès que je quitte le bureau. Je vous supprime de l'ordinateur dès que j'en ai l'occasion. La lenteur est un bug. Le programme le plus rapide est celui que vous n’exécutez pas. Alors arrêtez d'incorporer tout Chrome dans votre application.

Et vous tous, développeurs Web: apprenez C ou Rust ou quelque chose comme ça. Vos programmes s'exécutent sur un ordinateur . Jusqu'à ce que vous sachiez comment l'ordinateur fonctionne, vous êtes condamné. Et sors de ma pelouse jusqu'à ce que tu le découvres! * poing tremblant *

Et oui, lisez la crise des sites d'obésité ( traduction sur Habr ). C'est très drôle. Et très triste. Et très vital.

Edit: Spotify utilise en fait le Chromium Embedded Framework au lieu de se lancer via Electron. Mais il intègre toujours Chrome. Je ne savais pas à ce sujet lorsque j'ai écrit l'article, mais je n'enlève pas mes mots sur la performance ultime.

Source: https://habr.com/ru/post/fr427211/


All Articles