Browse Source

Math: Optimised generateUUID: See #12432

Mr.doob 7 years ago
parent
commit
d5e8d07e7f
1 changed files with 7 additions and 5 deletions
  1. 7 5
      src/math/Math.js

+ 7 - 5
src/math/Math.js

@@ -11,35 +11,37 @@ var _Math = {
 	generateUUID: function () {
 	generateUUID: function () {
 
 
 		// http://www.broofa.com/Tools/Math.uuid.htm
 		// http://www.broofa.com/Tools/Math.uuid.htm
+		// Replaced .join with string concatenation (@takahirox)
 
 
 		var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );
 		var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );
-		var uuid = new Array( 36 );
 		var rnd = 0, r;
 		var rnd = 0, r;
 
 
 		return function generateUUID() {
 		return function generateUUID() {
 
 
+			var uuid = '';
+
 			for ( var i = 0; i < 36; i ++ ) {
 			for ( var i = 0; i < 36; i ++ ) {
 
 
 				if ( i === 8 || i === 13 || i === 18 || i === 23 ) {
 				if ( i === 8 || i === 13 || i === 18 || i === 23 ) {
 
 
-					uuid[ i ] = '-';
+					uuid += '-';
 
 
 				} else if ( i === 14 ) {
 				} else if ( i === 14 ) {
 
 
-					uuid[ i ] = '4';
+					uuid += '4';
 
 
 				} else {
 				} else {
 
 
 					if ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;
 					if ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;
 					r = rnd & 0xf;
 					r = rnd & 0xf;
 					rnd = rnd >> 4;
 					rnd = rnd >> 4;
-					uuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];
+					uuid += chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];
 
 
 				}
 				}
 
 
 			}
 			}
 
 
-			return uuid.join( '' );
+			return uuid;
 
 
 		};
 		};