Merge pull request #499 from leebyron/rest
Improve performance of rest parameter.
This commit is contained in:
commit
1c6eeba2e9
@ -1,3 +1,3 @@
|
|||||||
for (var KEY = START; KEY < ARGUMENTS.length; KEY++) {
|
for (var LEN = ARGUMENTS.length, ARRAY = Array(ARRAY_LEN), KEY = START; KEY < LEN; KEY++) {
|
||||||
ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];
|
ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,23 +14,31 @@ exports.Function = function (node, parent, file) {
|
|||||||
|
|
||||||
var start = t.literal(node.params.length);
|
var start = t.literal(node.params.length);
|
||||||
var key = file.generateUidIdentifier("key");
|
var key = file.generateUidIdentifier("key");
|
||||||
|
var len = file.generateUidIdentifier("len");
|
||||||
|
|
||||||
var arrKey = key;
|
var arrKey = key;
|
||||||
if (node.params.length) {
|
if (node.params.length) {
|
||||||
arrKey = t.binaryExpression("-", arrKey, start);
|
arrKey = t.binaryExpression("-", key, start);
|
||||||
|
}
|
||||||
|
|
||||||
|
var arrLen = len;
|
||||||
|
if (node.params.length) {
|
||||||
|
arrLen = t.conditionalExpression(
|
||||||
|
t.binaryExpression(">", len, start),
|
||||||
|
t.binaryExpression("-", len, start),
|
||||||
|
t.literal(0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
node.body.body.unshift(
|
node.body.body.unshift(
|
||||||
t.variableDeclaration("var", [
|
|
||||||
t.variableDeclarator(rest, t.arrayExpression([]))
|
|
||||||
]),
|
|
||||||
|
|
||||||
util.template("rest", {
|
util.template("rest", {
|
||||||
ARGUMENTS: argsId,
|
ARGUMENTS: argsId,
|
||||||
ARRAY_KEY: arrKey,
|
ARRAY_KEY: arrKey,
|
||||||
|
ARRAY_LEN: arrLen,
|
||||||
START: start,
|
START: start,
|
||||||
ARRAY: rest,
|
ARRAY: rest,
|
||||||
KEY: key
|
KEY: key,
|
||||||
|
LEN: len,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var concat = function () {
|
var concat = function () {
|
||||||
var arrs = [];
|
for (var _len = arguments.length,
|
||||||
|
arrs = Array(_len),
|
||||||
for (var _key = 0; _key < arguments.length; _key++) {
|
_key = 0; _key < _len; _key++) {
|
||||||
arrs[_key] = arguments[_key];
|
arrs[_key] = arguments[_key];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,17 +1,17 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var t = function (f) {
|
var t = function (f) {
|
||||||
var items = [];
|
for (var _len = arguments.length,
|
||||||
|
items = Array(_len > 1 ? _len - 1 : 0),
|
||||||
for (var _key = 1; _key < arguments.length; _key++) {
|
_key = 1; _key < _len; _key++) {
|
||||||
items[_key - 1] = arguments[_key];
|
items[_key - 1] = arguments[_key];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function t(f) {
|
function t(f) {
|
||||||
var items = [];
|
for (var _len2 = arguments.length,
|
||||||
|
items = Array(_len2 > 1 ? _len2 - 1 : 0),
|
||||||
for (var _key2 = 1; _key2 < arguments.length; _key2++) {
|
_key2 = 1; _key2 < _len2; _key2++) {
|
||||||
items[_key2 - 1] = arguments[_key2];
|
items[_key2 - 1] = arguments[_key2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,17 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var t = function () {
|
var t = function () {
|
||||||
var items = [];
|
for (var _len = arguments.length,
|
||||||
|
items = Array(_len),
|
||||||
for (var _key = 0; _key < arguments.length; _key++) {
|
_key = 0; _key < _len; _key++) {
|
||||||
items[_key] = arguments[_key];
|
items[_key] = arguments[_key];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function t() {
|
function t() {
|
||||||
var items = [];
|
for (var _len2 = arguments.length,
|
||||||
|
items = Array(_len2),
|
||||||
for (var _key2 = 0; _key2 < arguments.length; _key2++) {
|
_key2 = 0; _key2 < _len2; _key2++) {
|
||||||
items[_key2] = arguments[_key2];
|
items[_key2] = arguments[_key2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user