Jump to content

Дерево трясется

В вычислительной технике « тряска дерева» — это метод устранения мертвого кода , который применяется при оптимизации кода. [1] Часто в отличие от традиционных методов устранения мертвого кода одной библиотеки, обычных для минификаторов, встряхивание дерева удаляет неиспользуемые функции из всего пакета, начиная с точки входа и включая только те функции, которые могут быть выполнены. [2] [3] Это кратко описывается как «включение живого кода».

Устранение мертвого кода в динамических языках — гораздо более сложная проблема, чем в статических языках. Идея «деревошейкера» зародилась в LISP. [4] в 1990-е годы. Идея состоит в том, что все возможные потоки выполнения программы можно представить в виде дерева вызовов функций, чтобы можно было исключить функции, которые никогда не вызываются.

Алгоритм был применен к JavaScript в Google Closure Tools , а затем к Dart в компиляторе dart2js, также написанном Google , представленном Бобом Нистромом в 2012 году. [5] [3] и описано в книге «Дротик в действии» автора Криса Бакетта в 2013 году:

Когда код преобразуется из Dart в JavaScript, компилятор выполняет «тряску дерева». В JavaScript вам нужно добавить целую библиотеку, даже если она вам нужна только для одной функции, но благодаря встряхиванию дерева JavaScript, основанный на Dart, включает только отдельные функции, которые вам нужны из библиотеки.

Крис Бакетт

Следующая волна популярности этого термина связана с проектом Рича Харриса Rollup. [6] разработан в 2015 году.

Связь с модулями ECMAScript 6

[ редактировать ]

Популярность встряхивания деревьев в JavaScript основана на том факте, что в отличие от модулей CommonJS загрузка модулей ECMAScript 6 является статической, и, таким образом, все дерево зависимостей можно вывести путем статического анализа синтаксического дерева. Таким образом, тряска дерева становится легкой проблемой. Однако встряхивание дерева применяется не только на уровне импорта/экспорта: оно также может работать и на уровне операторов, в зависимости от реализации. [ нужна ссылка ]

  1. ^ «Уменьшение полезной нагрузки JavaScript с помощью Tree Shaking» .
  2. ^ Харрис, Рич. «Встряхивание дерева или устранение мертвого кода» . Проверено 16 сентября 2020 г.
  3. ^ Перейти обратно: а б Лэдд, Сет. «Минификации недостаточно, нужно встряхнуть дерево» . Блог Сета Лэдда .
  4. ^ comp.lang.lisp Что такое древесина?
  5. ^ Может ли Google Dart решить проблемы скорости и масштабирования JavaScript?
  6. ^ Как очистить сборку JavaScript с помощью Tree Shaking
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c66ffc68eb9c7cf0106f5a1fdb3323fd__1646150880
URL1:https://arc.ask3.ru/arc/aa/c6/fd/c66ffc68eb9c7cf0106f5a1fdb3323fd.html
Заголовок, (Title) документа по адресу, URL1:
Tree shaking - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)