jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/385473 )
Change subject: Avoid creating an array slice for every token in _getTransforms ...................................................................... Avoid creating an array slice for every token in _getTransforms Profiling showed this to be a hot spot. Change-Id: Ib15d6eff4ea8384e7c3fcb9ad00fb20502b62023 --- M lib/wt2html/TokenTransformManager.js 1 file changed, 8 insertions(+), 10 deletions(-) Approvals: Subramanya Sastry: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/wt2html/TokenTransformManager.js b/lib/wt2html/TokenTransformManager.js index d3cdd53..7c75438 100644 --- a/lib/wt2html/TokenTransformManager.js +++ b/lib/wt2html/TokenTransformManager.js @@ -249,16 +249,14 @@ } } + var i = 0; if (minRank !== undefined) { // skip transforms <= minRank - var i = 0; while (i < tts.length && tts[i].rank <= minRank) { i += 1; } - return (i && tts.slice(i)) || tts; - } else { - return tts; } + return { first: i, transforms: tts, empty: i >= tts.length }; }; @@ -607,13 +605,13 @@ var ts = this._getTransforms(token, minRank); - if (!ts.length) { + if (ts.empty) { // nothing to do for this token accumChain.push(token); } else { var res, resTokens; - for (var j = 0, lts = ts.length; j < lts; j++) { - var transformer = ts[j]; + for (var j = ts.first, lts = ts.transforms.length; j < lts; j++) { + var transformer = ts.transforms[j]; // shared state is only used when we are still in this transfomer loop. // In that scenario, it is safe to reset this each time around @@ -935,10 +933,10 @@ var res = { token: token }; // Push the token through the transformations till it morphs - var j = 0; - var numTransforms = ts.length; + var j = ts.first; + var numTransforms = ts.transforms.length; while (j < numTransforms && (token === res.token)) { - transformer = ts[j]; + transformer = ts.transforms[j]; // Transform the token. res = transformer.transform(token, this, this.prevToken); if (traceTime) { -- To view, visit https://gerrit.wikimedia.org/r/385473 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib15d6eff4ea8384e7c3fcb9ad00fb20502b62023 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: C. Scott Ananian <canan...@wikimedia.org> Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org> Gerrit-Reviewer: Sbailey <sbai...@wikimedia.org> Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits