// 33 ~ 126 ascii 가 문자. var rxTest = /(\w+)=(\w+)/gi var randStrList = getRandStrings(10000); function getRandChar() { var charCode = Math.round(33 + ((126 - 33) * Math.random())); return String.fromCharCode(charCode); } function getRandomString() { var str = ""; var MAX_LEN = 127; var len = Math.round(MAX_LEN * Math.random()); while(len--) { str += getRandChar(); } return str; } function getRandStrings(num) { var randStrs = []; for (var i=0; i<num; i++) { randStrs.push(getRandomString()); } return randStrs; } testCases = { "String.search()" : function () { var matchCount = 0; for (var i=0, len = randStrList.length; i < len; i++) { var str = randStrList[i]; if (str.search(rxTest) !== -1) { //console.log(str); matchCount++; } } return matchCount; }, "String.match() with global" : function () { var matchCount = 0; for (var i=0, len = randStrList.length; i < len; i++) { var str = randStrList[i]; if (str.match(rxTest)) { //console.log(str); matchCount++; } } return matchCount; }, "String.match() without global" : function () { var matchCount = 0; rxTest.global = false; for (var i=0, len = randStrList.length; i < len; i++) { var str = randStrList[i]; if (str.match(rxTest)) { //console.log(str); matchCount++; } } rxTest.global = true; return matchCount; }, "Regex.exec()" : function () { var matchCount = 0; for (var i=0, len = randStrList.length; i < len; i++) { var str = randStrList[i]; rxTest.lastIndex = 0; if (rxTest.exec(str) != null) { //console.log(str); matchCount++; } } return matchCount; }, "Regex.test()" : function () { var matchCount = 0; for (var i=0, len = randStrList.length; i < len; i++) { rxTest.lastIndex = 0; var str = randStrList[i]; if (rxTest.test(str)) { //console.log(str); matchCount++; } } return matchCount; }, "String.search() again" : function () { var matchCount = 0; rxTest.global = false; for (var i=0, len = randStrList.length; i < len; i++) { var str = randStrList[i]; if (str.search(rxTest) !== -1) { //console.log(str); matchCount++; } } rxTest.global = true; return matchCount; } } $(function(){ var result = []; for (var funcName in testCases) { var testFunc = testCases[funcName] var stime = new Date(); var matchCount = testFunc.call(); var etime = new Date(); result.push(funcName +"(matched:"+ matchCount +") ---> <em>"+(etime - stime)+ "</em> ms" ); stime = new Date(); matchCount = testFunc.call(); etime = new Date(); result.push(funcName +"(matched:"+ matchCount +") ---> <em>"+(etime - stime)+ "</em> ms" ); } $('#output').html(result.join('<br />')); });
<span id="output"></span>
em {font-weight: bold;}