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

Reply via email to