Вы бы не хотели заразить рак, правда?

Некоторое время назад я опубликовал несколько тестов, сравнивающих Nano, Vim и Sublime с Atom и Visual Studio Code, последние два являются приложениями на основе Electron.js, и результаты были в некоторой степени ожидаемыми. Электронные приложения - жирные ублюдки, которые любят пожевать вашу память, и я определенно не первый, кто это замечаю.

TL;DR

Atom использует около одного гигабайта памяти для редактирования одного файла среднего размера.

В этой статье я довольно мягко отнесся к Electron и особо не стал его критиковать. Я просто просмотрел цифры, полученные при тестировании на моем повседневном портативном ноутбуке.

Однако меня интересовали отзывы на эту статью, которая в основном поддерживала Electron.js и в большинстве своем содержала что-то вроде следующего;

Что ж, он отлично работает на моей машине, а у меня только 32 гигабайта оперативной памяти.

- Разработчик Кремниевой долины, 2017 г.

Если это вы, то это хорошо для вас, но то, что что-то работает «достаточно хорошо» на вашем компьютере, не означает, что проблем с производительностью нет. Вы не являетесь конечными пользователями и, если вы разработчик, скорее всего, не используете обычное оборудование.

Производительность по-прежнему имеет значение

Мне кажется немного абсурдным даже говорить это, возможно, это может быть даже немного снисходительно, но на самом деле кажется, что чем больше вычислительной мощности мы получаем, тем более небрежно мы, разработчики, пишем хороший код, или, черт возьми, даже немного вменяемый код.

Итак, производительность имеет значение! Тот факт, что ваш процесс может перегружать процессор и память, не означает, что это должно быть. Это особенно верно, если у вашего приложения есть собственные эквиваленты, например, клиент текстового чата или музыкальный проигрыватель будет иметь минимальную площадь, на самом деле нет никаких оправданий тому, чтобы быть таким бездельником .

Операционная система - это среда взаимодействия, точно так же, как я не вернусь к навязчивой и раздражающей веб-странице, я не буду использовать навязчивые и раздражающие приложения.

Несколько лет назад мы могли делать удивительные вещи с несколькими герцами вычислительной мощности и несколькими мегабайтами памяти, в наши дни мы можем использовать все это, чтобы визуализировать мигающий значок курсора!

Электрон - это просто

В той или иной форме часто возникает аргумент о том, что Electron повышает продуктивность.

Electron настолько хорош, что нам не пришлось нанимать новых людей, мы можем просто использовать ваших веб-дизайнеров, которые у нас уже есть, и это так просто!

- Кто-то на самом деле сказал это

Хорошо, конечно, сделать так, чтобы сантехник вырезал квадратное колесо из доски, также намного проще, чем когда плотник вырезал идеально круглое деревянное колесо, но это будет чертовски ухабистая поездка, а квадратные колеса на самом деле прекрасны , Правильно?

Для меня это больше похоже на симптом общих характеристик производительности, которые мы видим: если единственный кеш, о котором знает разработчик, - это мемоизация функций или http-кеширование, тогда вы действительно не можете ожидать, что это приложение останется в каких-либо строках кеша.

Нижняя линия; как конечный пользователь меня действительно не заботит, насколько легко вам было создать приложение, если оно не работает должным образом, оно не работает должным образом, медлительность на сегодняшнем сверхбыстром оборудовании - это ошибка.

Позвольте мне просто повторить, что, как конечный пользователь, я не даю двум крысам оспаривать то, как вы написали свое приложение, вы можете оправдываться за инструменты, которые вы использовали для него, и хвалить его весь день, но медленный все равно медленный и плохой все еще плохо.

Электрон не является родным

Я обычно называю приложения Electron веб-страницами всякий раз, когда говорю о них, что, в свою очередь, имеет тенденцию раздражать многих веб-разработчиков, но на самом деле это все, что они есть. В приложениях Electron нет ничего похожего на рабочий стол, они всегда кажутся неуместными, даже самые простые элементы, такие как собственная строка меню, недоступны, обычно это нестандартная вещь, выглядящая как инопланетянин, если она вообще есть.

Приложения Electron просто не интегрируются с операционной системой, как это ожидается от родных приложений. Разве это не причина, по которой мы пообещали убить Flash и Air Runtime в первую очередь?

Что еще более странно, в последнее время появляются проекты, которые компилируются с C # на Electron. Да, пусть это утонет, от нативного кода (C # может быть скомпилирован из AOT в нативный, имеет множество фреймворков GUI) в JavaScript, чтобы он мог работать как веб-страница в браузере Electron.

Я даже не…