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.