Třepání se stromem - Tree shaking
v výpočetní, třes stromu je odstranění mrtvého kódu technika, která se používá při optimalizaci kódu zapsaného v ECMAScript dialekty jako Šipka, JavaScript nebo Strojopis do jednoho svazku, který je načten a webový prohlížeč. Často v kontrastu s tradičními technikami eliminace mrtvého kódu v jedné knihovně, které jsou běžné pro minifikátory, třepání stromu eliminuje nepoužívané funkce napříč svazkem tak, že začíná na vstupním bodě a zahrnuje pouze funkce, které lze provést [1][2]. Je stručně popsán jako „zahrnutí živého kódu“.
Dějiny
Odstranění mrtvého kódu v dynamických jazycích je mnohem těžší problém než ve statických jazycích. Myšlenka „třepačky stromů“ vznikla v roce LISP[3] v 90. letech. Myšlenka je, že všechny možné toky provádění programu lze reprezentovat jako strom volání funkcí, takže lze eliminovat funkce, které se nikdy nevolají.
Algoritmus byl aplikován na JavaScript v Uzavírací nástroje Google a pak do Šipka v kompilátoru dart2js také napsal Google, představil Bob Nystrom v roce 2012[4][2] a popsáno v knize „Dart in Action“ od autora Chrisa Bucketta z roku 2013:
Když je kód převeden z Dart na JavaScript, kompilátor provede „třes stromu“. V JavaScriptu musíte přidat celou knihovnu, i když ji potřebujete pouze pro jednu funkci, ale díky třepání stromu obsahuje JavaScript odvozený od Dart pouze jednotlivé funkce, které z knihovny potřebujete
— Chris Buckett
Další vlna popularity tohoto termínu je přičítána projektu Rich Harris Rollup[5] vyvinut v roce 2015.
Vztah k modulům ECMAScript 6
Popularita třesení stromů v JavaScriptu je založena na skutečnosti, že na rozdíl od modulů CommonJS je načítání modulů ECMAScript 6 statické, a proto lze celý strom závislostí odvodit statickou analýzou stromu syntaxe. Třes stromu se tak stává snadným problémem. Třepání stromu však neplatí pouze na úrovni importu / exportu: může také fungovat na úrovni výpisu, v závislosti na implementaci.[Citace je zapotřebí ]
Reference
- ^ Harris, Rich. „Otřesy stromů versus eliminace mrtvého kódu“. Citováno 16. září 2020.
- ^ A b Ladd, Sethe. Blog Setha Ladda http://blog.sethladd.com/2013/01/minification-is-not-enough-you-need.html. Chybějící nebo prázdný
| název =
(Pomoc) - ^ comp.lang.lisp Co je to třepačka stromů?
- ^ Může Google Dart vyřešit problémy s rychlostí a měřítkem JavaScriptu?
- ^ Jak vyčistit sestavení JavaScriptu pomocí třepání stromů