From 95f90755658de62f63eb2db00a32c1810fce1ada Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 30 Dec 2018 14:34:43 +0100 Subject: [PATCH] Optimize `TextLayerRenderTask._layoutText` to avoid intermediate string creation This method creates quite a few intermediate strings on each call and it's called often, even for smaller documents like the Tracemonkey document. Scrolling from top to bottom in that document resulted in 12936 strings being created in this method. With this commit applied, this is reduced to 3610 strings. --- src/display/text_layer.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/display/text_layer.js b/src/display/text_layer.js index 6abd23e42..1ab9518e0 100644 --- a/src/display/text_layer.js +++ b/src/display/text_layer.js @@ -540,12 +540,12 @@ var renderTextLayer = (function renderTextLayerClosure() { let transform = ''; if (textDivProperties.canvasWidth !== 0 && width > 0) { textDivProperties.scale = textDivProperties.canvasWidth / width; - transform = 'scaleX(' + textDivProperties.scale + ')'; + transform = `scaleX(${textDivProperties.scale})`; } if (textDivProperties.angle !== 0) { - transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform; + transform = `rotate(${textDivProperties.angle}deg) ${transform}`; } - if (transform !== '') { + if (transform.length > 0) { textDivProperties.originalTransform = transform; textDiv.style.transform = transform; }