Рубрики
Без рубрики

Что происходит, когда вы больше не можете доверять вашему файловому наблюдателю

С фанфой, окружающим выпуск Chokidar v3.0.0, я создал безобистую задачу для себя … Теги с узлом, OpenSource, JavaScript, NPM.

С Фанфаре, окружающий релиз Chokidar v3.0.0. Я создал безобистую задачу для себя на Обновите один из моих модулей для использования совершенно новых версий Отказ И мало что я знаю, вот где началось новое приключение.

Обновление прошло всего в порядке, так как Chokidar v3.0.0 имеет в значительной степени замену. Тем не менее, мой Macos Build начал не удавать. Мелкая его до подаптимального дизайна моего модуля, я начал то, что оказалось полным перезаписью, гораздо более оптимизированным, чем первая версия. Тем не менее, в то момент, когда MacOS строит начать прохождение. Любопытно, я начал расследовать и бежать через ошибку. Хотя кажется, что Chokidar идеально рад смотреть файл, когда осталось самостоятельно, Как только вы начнете выполнять другую работу в своем приложении, он больше не выпускал готовое событие . A Ошибка с грохотом Windows и а Linux CPU Bug затвердел проблемы для меня.

Увидев как на то, как просмотр файлов – это только функция в моем иначе, а не на просмотр файла, ориентированного на приложение, я бы хотел, чтобы роскошь выполнял другую работу, когда файлы смотрят на заднем плане. Мне пришлось доверять, что мой файл-наблюдатель с моей спиной, даже если я решил использовать несколько циклов ЦП на что-то другое. Так как любой хороший инженер, я начал задаваться вопросом: «🤔 Что касается просмотра файлов?»

Мы все слышали это, прежде чем … Просмотр файлов трудно, и мы должны опираться на тестированные битве библиотеки, чтобы справиться с ними для нас. Но вы задумались, где началась эта история? Оказывается, ответ на 2012 год. Узел был еще в версии 0.6 (версия 0,8, которая будет выпущена позже в этом году), сообщество было диким Западом, и кто-либо, использующий это был мятежным. То были времена. (Для тех, кто задается вопросом, взгляд тоже начал тот же год.)

С такой молодой экосистемой пришли различные недостатки. В мире просмотра файлов поддержка была довольно пятнистой и непоследовательной. Он не сообщил имена файлов на MacOS (NÉE OSX), события иногда были (часто) зарегистрированы дважды, только не полезно Переименовать Событие присутствует, и рекурсивные наблюдения не были на самом деле. И что все пришли из Readme с 2012 года Отказ История Сегодня не изменилось сегодня , но вы ошиблись в предположении, что реализация тоже не изменилась. С тех пор узел начал полагаться на Fsevents Для просмотра файлов на MacOS начал отчетность файлов, добавленные рекурсивные наблюдения на Windows и получили много других улучшений. Кажется, что простой смертный разработчик, как я, мог даже сделать что-то сделать.

Это снова мы… Кто-то пытается изобретать колесо, или … Я думаю … смотреть руль?

Эй, теперь! Я думал, что нам нравилось друг друга. Я бы не потерял свое время на еще одну версию той же старой вещи. Я говорю о Watchboy И он великолепна!

Видите ли, с 7 лет фиксированными проблемами и полученными знаниями, мы можем получить хорошие вещи. Если библиотека собирается заработать свое место на ринге, ему не нужно только решить проблему под рукой (то есть, смотреть файлы), но нужно сделать это быстрее, сделайте это с меньшим использованием памяти, будь меньшим , будь проще в использовании и быть подкрепленным более простым и легко понимать код. Watchboy это все так и больше. Это верно, это также показывает вам фотографию собаки!

Watchboy не просто построен для наблюдения за файлами. Он был построен для скорости, создан для использования с низким использованием памяти, создан для простоты кода, в порядке с самой первой строки кода. Это все вещи, которые трудно доохимить после многих лет только «решение проблемы». Итак, давайте посмотрим на некоторые цифры.

На этом первом графике мы посмотрим на просмотр исходного кода довольно маленькой библиотеки, Реагировать Отказ

Прежде чем мы прыгаем на выводы, давайте посмотрим на просмотр больших репозиторий исходного кода, VSCode Сама (который по иронии судьбы использует Chokidar для просмотра файлов).

Хм … это изображение выглядит знакомым. Но давайте сделаем еще один, прежде чем говорить об этом. Давайте посмотрим на исходный код полностью дьявольского проекта, Бабел Отказ Это приходит в 16 847 файлов в 8,276 каталогах.

Хорошо, давайте уйдим слон в комнате с дороги. MacOS так быстро! Это должен быть победитель этого эталона, верно? Правильно? Оставьте мне комментарий об этом, если хотите … Но будьте хорошими, я чувствительна.

Теперь некоторые реальные разговоры: мы можем увидеть проблему довольно быстро. Взгляд делает в порядке в Linux, а Chokidar хорошо на MacOS, но окна в основном пренебрегают случаем. Операционная система, используемая половиной разработчиков в 2019 году, является гражданином второго курса (С числами потребителей еще выше) до 5x медленнее, чем MacOS, с Linux не удерживает гораздо лучше. Теперь, основываясь на результатах, прежде чем смотреть на Watchboy, легко думать, что «Windows просто отстой … Я даже слышал, как люди говорят это раньше ». Но дело в том, что вы не можете просто пренебречь этим. В этом отношении вы не можете пренебрегать Linux, Учитывая, что он имеет столько же разработчиков, использующих его как MacOS Отказ Когда вы строите с земли для скорости и консистенции, вы можете заставить ваше программное обеспечение вести себя то же самое на всех операционных системах. Глядя на результаты Watchboy, мы видим гораздо более консистенцию во всех операционных системах вовремя, чтобы посмотреть файлы, с постоянно низким использованием памяти.

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

Должно быть, я собирался сфотографировать эти результаты, верно? Я имею в виду, я предвзятый в конце концов. Я приветствую вас взглянуть на код и номера Более близко, и добавить свои собственные материалы на тест. Оборудование для этих испытаний стандартизировано для окружающей среды Ci, поэтому мы все можем воспроизводить те же результаты.

Если вы хотите помочь сделать Watchboy Еще лучше, отправьте PR мой путь!

Оригинал: “https://dev.to/catdad/what-happens-when-you-can-no-longer-trust-your-file-watcher-15d8”