Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/314175

Change subject: Replace Array#concat with Array#push in converter
......................................................................

Replace Array#concat with Array#push in converter

When converting long articles this appears to be much faster.

Testing on [[Barack Obama]]:
* Chrome: 580ms -> 480ms
* Firefox: 2400ms -> 720ms

Change-Id: I1cb6dc2077138c44a27faceb3b6c73fac9e55dff
---
M src/dm/ve.dm.Converter.js
1 file changed, 12 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/75/314175/1

diff --git a/src/dm/ve.dm.Converter.js b/src/dm/ve.dm.Converter.js
index 1da2d36..ce89bb4 100644
--- a/src/dm/ve.dm.Converter.js
+++ b/src/dm/ve.dm.Converter.js
@@ -548,7 +548,7 @@
                        if ( wrappedMetaItems[ i ].type && wrappedMetaItems[ i 
].type.charAt( 0 ) !== '/' ) {
                                if ( wrappedMetaItems[ i ].internal && 
wrappedMetaItems[ i ].internal.whitespace ) {
                                        if ( whitespaceTreatment === 'restore' 
) {
-                                               toInsert = toInsert.concat( 
ve.dm.Converter.static.getDataContentFromText(
+                                               toInsert.push.apply( toInsert, 
ve.dm.Converter.static.getDataContentFromText(
                                                                
wrappedMetaItems[ i ].internal.whitespace[ 0 ], context.annotations
                                                ) );
                                                delete wrappedMetaItems[ i 
].internal;
@@ -565,7 +565,7 @@
                        // This is horrible and this whole system desperately 
needs to be rewritten
                        ve.batchSplice( data, wrappedWhitespaceIndex, 0, 
toInsert );
                } else {
-                       data = data.concat( toInsert );
+                       data.push.apply( data, toInsert );
                }
                wrappedMetaItems = [];
        }
@@ -707,7 +707,7 @@
                                                }
                                        }
                                        outputWrappedMetaItems( 'restore' );
-                                       data = data.concat( childDataElements );
+                                       data.push.apply( data, 
childDataElements );
                                        // Clear wrapped whitespace
                                        wrappedWhitespace = '';
                                } else {
@@ -725,7 +725,7 @@
                                                // Queue wrapped meta items 
only if it's actually possible for us to move them out
                                                // of the wrapper
                                                if ( context.inWrapper && 
context.canCloseWrapper ) {
-                                                       wrappedMetaItems = 
wrappedMetaItems.concat( childDataElements );
+                                                       
wrappedMetaItems.push.apply( wrappedMetaItems, childDataElements );
                                                        if ( wrappedWhitespace 
!== '' ) {
                                                                data.splice( 
wrappedWhitespaceIndex, wrappedWhitespace.length );
                                                                addWhitespace( 
childDataElements[ 0 ], 0, wrappedWhitespace );
@@ -734,7 +734,7 @@
                                                        }
                                                } else {
                                                        outputWrappedMetaItems( 
'restore' );
-                                                       data = data.concat( 
childDataElements );
+                                                       data.push.apply( data, 
childDataElements );
                                                        processNextWhitespace( 
childDataElements[ 0 ] );
                                                        prevElement = 
childDataElements[ 0 ];
                                                }
@@ -786,7 +786,7 @@
                                                // Recursion
                                                // Opening and closing elements 
are added by the recursion too
                                                outputWrappedMetaItems( 
'restore' );
-                                               data = data.concat(
+                                               data.push.apply( data,
                                                        
this.getDataFromDomSubtree( childNode, childDataElements[ 0 ],
                                                                new 
ve.dm.AnnotationSet( this.store )
                                                        )
@@ -797,7 +797,7 @@
                                                }
                                                // Write childDataElements 
directly
                                                outputWrappedMetaItems( 
'restore' );
-                                               data = data.concat( 
childDataElements );
+                                               data.push.apply( data, 
childDataElements );
                                        }
                                        processNextWhitespace( 
childDataElements[ 0 ] );
                                        prevElement = childDataElements[ 0 ];
@@ -822,7 +822,7 @@
                                                        // comment about 
wrappedWhitespace below)
                                                        wrappedWhitespace = 
text;
                                                        wrappedWhitespaceIndex 
= data.length;
-                                                       data = data.concat(
+                                                       data.push.apply( data,
                                                                
ve.dm.Converter.static.getDataContentFromText( wrappedWhitespace, 
context.annotations )
                                                        );
                                                } else {
@@ -876,12 +876,12 @@
                                                        outputWrappedMetaItems( 
'restore' );
                                                        // We were already 
wrapping in a paragraph,
                                                        // so the leading 
whitespace must be output
-                                                       data = data.concat(
+                                                       data.push.apply( data,
                                                                
ve.dm.Converter.static.getDataContentFromText( matches[ 1 ], 
context.annotations )
                                                        );
                                                }
                                                // Output the text sans 
whitespace
-                                               data = data.concat(
+                                               data.push.apply( data,
                                                        
ve.dm.Converter.static.getDataContentFromText( matches[ 2 ], 
context.annotations )
                                                );
 
@@ -894,7 +894,7 @@
                                                // because we have to apply the 
correct annotations.
                                                wrappedWhitespace = matches[ 3 
];
                                                wrappedWhitespaceIndex = 
data.length;
-                                               data = data.concat(
+                                               data.push.apply( data,
                                                        
ve.dm.Converter.static.getDataContentFromText( wrappedWhitespace, 
context.annotations )
                                                );
                                                prevElement = wrappingParagraph;
@@ -931,7 +931,7 @@
                                }
 
                                // Annotate the text and output it
-                               data = data.concat(
+                               data.push.apply( data,
                                        
ve.dm.Converter.static.getDataContentFromText( text, context.annotations )
                                );
                                break;

-- 
To view, visit https://gerrit.wikimedia.org/r/314175
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1cb6dc2077138c44a27faceb3b6c73fac9e55dff
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to