diff options
| author | Misko Hevery | 2011-03-23 09:30:08 -0700 | 
|---|---|---|
| committer | Misko Hevery | 2011-06-08 13:49:11 -0700 | 
| commit | 20ce797906bf20cfb1682a6bd1bb23c02aedc369 (patch) | |
| tree | e5644672e5e904060e4d1848aa4a0134044ee3aa /src | |
| parent | cc9f1fdf38bb179166212382b33e78255e669e73 (diff) | |
| download | angular.js-20ce797906bf20cfb1682a6bd1bb23c02aedc369.tar.bz2 | |
performance improvement of single statement in parser
Diffstat (limited to 'src')
| -rw-r--r-- | src/parser.js | 22 | 
1 files changed, 13 insertions, 9 deletions
diff --git a/src/parser.js b/src/parser.js index 6916a3f7..8d7e607c 100644 --- a/src/parser.js +++ b/src/parser.js @@ -325,15 +325,19 @@ function parser(text, json){        if (tokens.length > 0 && !peek('}', ')', ';', ']'))          statements.push(filterChain());        if (!expect(';')) { -        return function (self){ -          var value; -          for ( var i = 0; i < statements.length; i++) { -            var statement = statements[i]; -            if (statement) -              value = statement(self); -          } -          return value; -        }; +        // optimize for the common case where there is only one statement. +        // TODO(size): maybe we should not support multiple statements? +        return statements.length == 1 +          ? statements[0] +          : function (self){ +            var value; +            for ( var i = 0; i < statements.length; i++) { +              var statement = statements[i]; +              if (statement) +                value = statement(self); +            } +            return value; +          };        }      }    }  | 
