From: Jakub Pawlowicz Date: Thu, 9 Oct 2014 06:15:07 +0000 (+0100) Subject: Speeds up advanced processing by shortening optimize loop. X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=dd8c14a084f422c3badbb5f9c58b44a54f8ceab7;p=clean-css.git Speeds up advanced processing by shortening optimize loop. * As it seems we only need 2 extra passes from #removeDuplicates and #mergeAdjacent. --- diff --git a/History.md b/History.md index 9d15be25..4db9ba76 100644 --- a/History.md +++ b/History.md @@ -3,6 +3,7 @@ * Allows `target` option to be a path to a folder instead of a file. * Breaks 2.x compatibility for using CleanCSS as a function. +* Speeds up advanced processing by shortening optimize loop. * Fixed issue [#360](https://github.com/GoalSmashers/clean-css/issues/360) - adds 7 extra CSS colors. [2.2.16 / 2014-09-16](https://github.com/jakubpawlowicz/clean-css/compare/v2.2.15...v2.2.16) diff --git a/lib/selectors/optimizers/advanced.js b/lib/selectors/optimizers/advanced.js index 68a98822..2f37a40c 100644 --- a/lib/selectors/optimizers/advanced.js +++ b/lib/selectors/optimizers/advanced.js @@ -235,12 +235,6 @@ AdvancedOptimizer.prototype.reduceSelector = function (tokens, selector, data, o } }; -AdvancedOptimizer.prototype.noChanges = function () { - return this.minificationsMade.length > 4 && - this.minificationsMade[0] === false && - this.minificationsMade[1] === false; -}; - function optimizeProperties(tokens, propertyOptimizer) { for (var i = 0, l = tokens.length; i < l; i++) { var token = tokens[i]; @@ -264,21 +258,12 @@ AdvancedOptimizer.prototype.optimize = function (tokens) { optimizeProperties(tokens, self.propertyOptimizer); - // Run until 2 last operations do not yield any changes - self.minificationsMade = []; - while (true) { - if (self.noChanges()) - break; - self.removeDuplicates(tokens); + self.removeDuplicates(tokens); + self.mergeAdjacent(tokens); + self.reduceNonAdjacent(tokens); - if (self.noChanges()) - break; - self.mergeAdjacent(tokens); - - if (self.noChanges()) - break; - self.reduceNonAdjacent(tokens); - } + self.removeDuplicates(tokens); + self.mergeAdjacent(tokens); } _optimize(tokens);