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/parser.js | |
| parent | cc9f1fdf38bb179166212382b33e78255e669e73 (diff) | |
| download | angular.js-20ce797906bf20cfb1682a6bd1bb23c02aedc369.tar.bz2 | |
performance improvement of single statement in parser
Diffstat (limited to 'src/parser.js')
| -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; + }; } } } |
