From 31c613f0642d3eed677d129f78eb2b0f3707b3f7 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote <nnethercote@mozilla.com> Date: Tue, 8 Jul 2014 21:31:07 -0700 Subject: [PATCH] Avoid creating intermediate strings in Util.makeCssRgb(). On one example (the Wuppertal map) this avoids the creation of over 230,000 intermediate strings. --- src/shared/util.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/shared/util.js b/src/shared/util.js index 32998169f..78e4f59f2 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -560,8 +560,15 @@ var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; var Util = PDFJS.Util = (function UtilClosure() { function Util() {} + var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; + + // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids + // creating many intermediate strings. Util.makeCssRgb = function Util_makeCssRgb(rgb) { - return 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')'; + rgbBuf[1] = rgb[0]; + rgbBuf[3] = rgb[1]; + rgbBuf[5] = rgb[2]; + return rgbBuf.join(''); }; // Concatenates two transformation matrices together and returns the result.