17 September 2009 3 comments Python
For sake of argument I compiled the C version and ran that in my little benchmark and did so by using the subprocess module. Also, for the sake of comparison I threw in a run with YUI Compressor. Here are some quick results:
On js/signup-core.js -------------------- js_slimmer from 9708 to 6905 in 0.0245039463043 seconds jsmin from 9708 to 6720 in 0.0850019454956 seconds jsmin.c from 9708 to 6721 in 0.0026159286499 seconds yuicompressor from 9708 to 6102 in 0.914173126221 seconds On js/zoom.js ------------- js_slimmer from 5920 to 3712 in 0.0106379985809 seconds jsmin from 5920 to 3582 in 0.0582370758057 seconds jsmin.c from 5920 to 3583 in 0.00282216072083 seconds yuicompressor from 5920 to 2771 in 0.839382171631 seconds On js/diypack.js ---------------- js_slimmer from 21559 to 14059 in 0.0409741401672 seconds jsmin from 21559 to 13655 in 0.177556037903 seconds jsmin.c from 21559 to 13656 in 0.00346994400024 seconds yuicompressor from 21559 to 11638 in 0.891603946686 seconds
So, roughly, slimmer is 4 times faster than jsmin.py but fails to minify a couple of bytes. jsmin.c is about 6 times faster than slimmer.py but is awkward since it's in C. I guess jsmin.c is the way forward when you want speed and the best result. slimmer has the advantage of being all in python and PyPi and contains functions for CSS, HTML and XHTML as well.
It's clear the YUI Compressor does a wicked job at minifying but by running a .jar file every time in a subprocess is crazily slow if that matters for you.