[code] <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”> <html> <head> <title>Javascript performance test</title> <style> body, span{font-family: verdana, sans serif; font-size: 12px;} input{margin-right: 20px;} span{padding-left: 20px;} </style> <script> var start; var end; var forLoopTime = 0; var addTime = 0; var subtractTime = 0; var multiplyTime = 0; var divideTime = 0; var divide2Time = 0; var fromArrayTime = 0; var parseIntTime = 0; var varTime = 0; var sinTime = 0; var floorTime = 0; var ifTime = 0; var readGlobalTime = 0; var concatStringsTime = 0; var sortArrayTime = 0; gValue = 123; var continueAfter = false; function testFor() { start = new Date(); for (var i=0; i<=1000000; i++) { void(0); } end = new Date(); forLoopTime = end-start; var textElem = document.createTextNode(forLoopTime + ‘ms ‘) document.getElementById(‘forResult’).appendChild(textElem); completed(); } function testAdd() { var value1=123; var value2=234; var value3; start = new Date(); for (var i=0; i<=1000000; i++) { value3 = value1 + value2; } end = new Date(); addTime = end-start; var textElem = document.createTextNode(addTime + ‘ms ‘) document.getElementById(‘addResult’).appendChild(textElem); completed(); } function testSubtract() { var value1=123; var value2=234; var value3; start = new Date(); for (var i=0; i<=1000000; i++) { value3 = value2 – value1 } end = new Date(); subtractTime = end-start; var textElem = document.createTextNode(subtractTime + ‘ms ‘) document.getElementById(‘subtractResult’).appendChild(textElem); completed(); } function testMultiply() { var value1=123; var value2=234; var value3; start = new Date(); for (var i=0; i<=1000000; i++) { value3 = value2 * value1 } end = new Date(); multiplyTime = end-start; var textElem = document.createTextNode(multiplyTime + ‘ms ‘) document.getElementById(‘multiplyResult’).appendChild(textElem); completed(); } function testDivide() { var value1=123; var value2=234; var value3; start = new Date(); for (var i=0; i<=1000000; i++) { value3 = value2 / value1 } end = new Date(); divideTime = end-start; var textElem = document.createTextNode(divideTime + ‘ms ‘) document.getElementById(‘divideResult’).appendChild(textElem); completed(); } function testDivide2() { var value1=123; var value2=234; var value3; start = new Date(); var temp= (1 / value1); for (var i=0; i<=1000000; i++) { value3 = value2 * temp } end = new Date(); divide2Time = end-start; var textElem = document.createTextNode(divide2Time + ‘ms ‘) document.getElementById(‘divide2Result’).appendChild(textElem); completed(); } function testFromArray() { var value3; var value4 = new Array(1,2,3,4,5,6,7,8,9,10) start = new Date(); for (var i=0; i<=1000000; i++) { value3 = value4[6] } end = new Date(); fromArrayTime = end-start; var textElem = document.createTextNode(fromArrayTime + ‘ms ‘) document.getElementById(‘fromArrayResult’).appendChild(textElem); completed(); } function testParseInt() { var value3; start = new Date(); for (var i=0; i<=1000000; i++) { value3 = parseInt(123.23) } end = new Date(); parseIntTime = end-start; var textElem = document.createTextNode(parseIntTime + ‘ms ‘) document.getElementById(‘parseIntResult’).appendChild(textElem); completed(); } function testVar() { start = new Date(); for (var i=0; i<=1000000; i++) { var a=1; var b=2; var c=3; } end = new Date(); varTime = end-start; var textElem = document.createTextNode(varTime + ‘ms ‘) document.getElementById(‘varResult’).appendChild(textElem); completed(); } function testSin() { var value3; start = new Date(); for (var i=0; i<=1000000; i++) { value3 = Math.sin(.1) } end = new Date(); sinTime = end-start; var textElem = document.createTextNode(sinTime + ‘ms ‘) document.getElementById(‘sinResult’).appendChild(textElem); completed(); } function testFloor() { var value3; start = new Date(); for (var i=0; i<=1000000; i++) { value3 = Math.floor(43.341) } end = new Date(); floorTime = end-start; var textElem = document.createTextNode(floorTime + ‘ms ‘) document.getElementById(‘floorResult’).appendChild(textElem); completed(); } function testIf() { var value1=123; start = new Date(); for (var i=0; i<=1000000; i++) { if (value1<12) { void(0); } } end = new Date(); ifTime = end-start; var textElem = document.createTextNode(ifTime + ‘ms ‘) document.getElementById(‘ifResult’).appendChild(textElem); completed(); } function testReadGlobal() { var value start = new Date(); for (var i=0; i<=1000000; i++) { value = gValue; } end = new Date(); readGlobalTime = end-start; var textElem = document.createTextNode(readGlobalTime + ‘ms ‘) document.getElementById(‘readGlobalResult’).appendChild(textElem); completed(); } function testConcatStrings() { var string1 = ‘abcdefghijklmnopqrstuvxyz’ var string2 = ‘abcdefghijklmnopqrstuvxyz’ var string3; start = new Date(); for (var i=0; i<=1000000; i++) { string3 = string1 + string2; } end = new Date(); concatStringsTime = end-start; var textElem = document.createTextNode(concatStringsTime + ‘ms ‘) document.getElementById(‘concatStringsResult’).appendChild(textElem); completed(); } function testSortArray() { var theArray = new Array; for(i=0; i<=10000; i++) theArray[i] = parseInt(Math.random()*10000) start = new Date(); theArray.sort(); end = new Date(); sortArrayTime = end-start; var textElem = document.createTextNode(sortArrayTime + ‘ms ‘) document.getElementById(‘sortArrayResult’).appendChild(textElem); completed(); } function completed() { if(continueAfter) { if(forLoopTime==0) setTimeout(‘testFor()’,10); else if(addTime==0) setTimeout(‘testAdd()’,10); else if(subtractTime==0) setTimeout(‘testSubtract()’,10); else if(multiplyTime==0) setTimeout(‘testMultiply()’,10); else if(divideTime==0) setTimeout(‘testDivide()’,10); else if(divide2Time==0) setTimeout(‘testDivide2()’,10); else if(fromArrayTime==0) setTimeout(‘testFromArray()’,10); else if(parseIntTime==0) setTimeout(‘testParseInt()’,10); else if(varTime==0) setTimeout(‘testVar()’,10); else if(sinTime==0) setTimeout(‘testSin()’,10); else if(floorTime==0) setTimeout(‘testFloor()’,10); else if(ifTime==0) setTimeout(‘testIf()’,10); else if(readGlobalTime==0) setTimeout(‘testReadGlobal()’,10); else if(concatStringsTime==0) setTimeout(‘testConcatStrings()’,10); else if(sortArrayTime==0) setTimeout(‘testSortArray()’,10); else continueAfter=false; } if(forLoopTime!=0&&addTime!=0&&subtractTime!=0&&multiplyTime!=0&÷Time!=0&÷2Time!=0&&fromArrayTime!=0&&pars
eIntTime!=0&&varTime!=0&&sinTime!=0&&floorTime!=0&&ifTime!=0&&readGlobalTime!=0&&concatStringsTime!=0&&sortArrayTime!=0) { averageTime = (forLoopTime+addTime+subtractTime+multiplyTime+divideTime+divide2Time+fromArrayTime+parseIntTime+varTime+sinTime+floorTime+ifTime+readGlobalTime+concatStringsTime+sortArrayTime)/15; document.getElementById(‘averageResult’).innerHTML = ‘<b>’ + parseInt(averageTime) + ‘ms</b>’; } } </script> </head> <body> <form> <input type=”button” value=”for-loop” onclick=”testFor()”>1000000 times:<span id=”forResult”></span><br /> <input type=”button” value=”add” onclick=”testAdd()”>1000000 times: <span id=”addResult”></span><br /> <input type=”button” value=”subtract” onclick=”testSubtract()”>1000000 times:<span id=”subtractResult”></span><br /> <input type=”button” value=”multiply” onclick=”testMultiply()”>1000000 times:<span id=”multiplyResult”></span><br /> <input type=”button” value=”divide” onclick=”testDivide()”>1000000 times:<span id=”divideResult”></span><br /> <input type=”button” value=”divide2″ onclick=”testDivide2()”>1000000 times:<span id=”divide2Result”></span><br /> <input type=”button” value=”get value from array” onclick=”testFromArray()”>1000000 times:<span id=”fromArrayResult”></span><br /> <input type=”button” value=”parseInt()” onclick=”testParseInt()”>1000000 times:<span id=”parseIntResult”></span><br /> <input type=”button” value=”var” onclick=”testVar()”>1000000 times:<span id=”varResult”></span><br /> <input type=”button” value=”Math.sin()” onclick=”testSin()”>1000000 times:<span id=”sinResult”></span><br /> <input type=”button” value=”Math.floor()” onclick=”testFloor()”>1000000 times:<span id=”floorResult”></span><br /> <input type=”button” value=”if” onclick=”testIf()”>1000000 times:<span id=”ifResult”></span><br /> <input type=”button” value=”read global variable” onclick=”testReadGlobal()”>1000000 times:<span id=”readGlobalResult”></span><br /> <input type=”button” value=”concatenate strings” onclick=”testConcatStrings()”>1000000 times:<span id=”concatStringsResult”></span><br /> <input type=”button” value=”sort Array” onclick=”testSortArray()”><span id=”sortArrayResult”></span><br /> <br /> <input type=”button” value=”Run all tests” onclick=”continueAfter=true;completed()”>Average time: <span id=”averageResult”></span> </form> </body> </html> [/code]