Archief - JS: alphaCompressor - minimaliseer je jscriptjes

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

L0|2|23

Legacy Member
alphaCompressor is een javascript dat als doel heeft jouw javascriptjes zo klein mogelijk te maken.
Versie 0.5 is sinds vandaag af, samen met een nieuwe interface, en is een aanzienlijke verbetering t.o.v. de vorige versie.

Changelog
  • Volledig herschreven cruncher (waarvan de compressor ook afhankelijk is). Nog minder kans op fouten en verbeterde stabiliteit als gevolg.
  • Een deel van de compressor herschreven m.b.v. setTimeout() om te voorkomen dat browsers vast lijken te lopen tijdens het compressen.
  • De compressor is nu minstens 4x sneller dan de vorige versie.
  • Duidelijkere code en betere commentaar.
Korte vergelijking met enkele andere js compressors

Ik heb Caio Chassot's js lib (38,9kB), die ooit gefeatured werd op A List Apart, gecompressed met verschillende programma's. De onderstaande tabel geeft de resultaten weer. Dit zijn zeker niet alle compressors die ik tegengekomen ben, maar wel de bekendste/best presterende. Memtronic's compressor breekt echter wel eens vaker de scripts na compressie. Dat komt bij Dean Edwards packer en mijn eigen alphaCompressor bijna niet voor (ik gebruike vroeger namelijk Memtronic's js compressor vanwege de efficientie, maar heb naar aanleiding van het breken van de scripts na compressie met Memtronic's compressor mijn eigen compressor moeten schrijven).

Code:
Compressor________Tijd_____Grootte____Reductie
[url="http://laurent.sorber.be/alphacompressor/"][u][color="red"]alphaCompressor[/color][/u][/url] | 1'21" | 5793 Bytes | %85.54
[url="http://hometown.aol.de/_ht_a/memtronic/"][u][color="red"]Memtronic[/color][/u][/url]       | 7'22" | 6162 Bytes | %84.62
[url="http://dean.edwards.name/packer/"][u][color="red"]Dean E. Packer[/color][/u][/url]  | 0'02" | 8141 Bytes | %79.69

JSMin van Douglas Crockford (grote naam in de js wereld) heb ik niet getest omdat die imo niet kwalificeert voor de test. Het is niet in js geschreven en doet ook geen echte compressie, alleen maar crunchen.

Bram

Legacy Member
ik ben mootoools v1.11 eens aant compressen in safari... mor ie doet er precies wel heel lang over.
ik heb gezien da zij die dean packer methode gebruiken... eens zien of em nu nog kleiner wordt, als het lukt.

dang. opera kan het nie aan, safari loopt vast en firefox vraagt heel de tijd offek het wil stoppen of doordoen.
morgen eens proberen op IE

L0|2|23

Legacy Member
SveltestSword zei:
ik ben mootoools v1.11 eens aant compressen in safari... mor ie doet er precies wel heel lang over.
ik heb gezien da zij die dean packer methode gebruiken... eens zien of em nu nog kleiner wordt, als het lukt.

dang. opera kan het nie aan, safari loopt vast en firefox vraagt heel de tijd offek het wil stoppen of doordoen.
morgen eens proberen op IE

Ik raad aan om onder de 80kByte te blijven, de compressietijd loopt namelijk exponentieel op i.f.v. de filesize (dit is een beperking van javascript strings, en kan opgelost worden d.m.v. blocks die dan wel de compressiefactor omlaag trekken). De compressie zelf is daardoor ook exponentieel in snelheid; eerst bijna niet vooruit te branden en naar het einde toe zeer snel (d.i. onafhankelijke van de totale compressietijd).

De laatste versie probeert de browser vrij te maken om nog te browsen/andere dingen te doen, maar het algoritme blijkt heel erg zwaar en soms hapert het toch nog. Opera haalt bij mij de beste resultaten (30kB op ~2min, 100kB op een half uur).

Om een paar resultaten te geven: alphaCompressor brengt jquery (uncompressed @ 62kB) naar 17.5kB in 6'20" (dat is wel wat minder dan de huidige 21.1kB die D.E.Packer hen momenteel geeft).

Er is een ding nog niet ondersteund door de compressor: conditional compiling. Als je dus in je code /*@cc_on ... @*/ hebt staan wordt die momenteel gewoon verwijderd.

alphaCompressor krijgt net als alphaCorners een recode in de nabije toekomst om deze problemen op te lossen.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan