perf($parse): speed up fn invocation by optimizing arg collection

8-15% improvement for depending on the number of args
This commit is contained in:
Igor Minar
2014-08-01 15:48:41 -07:00
parent 6f5fc557ad
commit fecfc5b09f

View File

@@ -723,14 +723,17 @@ Parser.prototype = {
this.consume(')');
var parser = this;
var args = []; // we can safely reuse the array
return function(scope, locals) {
var args = [];
var context = contextGetter ? contextGetter(scope, locals) : scope;
for (var i = 0; i < argsFn.length; i++) {
args.push(argsFn[i](scope, locals));
var i = argsFn.length;
while (i--) {
args[i] = argsFn[i](scope, locals);
}
var fnPtr = fn(scope, locals, context) || noop;
ensureSafeObject(context, parser.text);