mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@2011 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
		
			
				
	
	
		
			294 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			294 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML>
 | |
| <html>
 | |
|   <head>
 | |
|     <title>Performance Tests</title>
 | |
|     <style>
 | |
|       body { font-family: Tahoma, Serif; font-size: 9pt; }
 | |
|     </style>
 | |
|   </head>
 | |
|   <body bgcolor="white">
 | |
|     <h1>Performance Tests</h1>
 | |
|     <input type="button" value="Run Tests" onClick="run();" id="run"/> Filter: <input type="text" size="50" id="filters"/>
 | |
|     <div><span id="statusBox"></span> <progress id="progressBox" value="0" style="display:none"></progress></div>
 | |
| 
 | |
|     <div style="padding-top:10px; padding-bottom:10px">
 | |
|     <table id="resultTable" border="1" cellspacing="1" cellpadding="4">
 | |
|       <thead>
 | |
|         <tr>
 | |
|           <td>Name</td>
 | |
|           <td>Iterations per Run</td>
 | |
|           <td>Avg (ms)</td>
 | |
|           <td>Min (ms)</td>
 | |
|           <td>Max (ms)</td>
 | |
|           <td>StdDev (ms)</td>
 | |
|           <td>Runs (ms)</td>
 | |
|         </tr>
 | |
|       </thead>
 | |
|       <!-- result rows here -->
 | |
|     </table>
 | |
|     </div>
 | |
| 
 | |
|     <hr width="80%">
 | |
| 
 | |
|     Result 1: <input type="text" size="100" id="result1"/>
 | |
|     <br/>Result 2: <input type="text" size="100" id="result2"/>
 | |
|     <br/><input type="button" value="Compare" onClick="compare();" id="compare"/>
 | |
| 
 | |
|     <div style="padding-top:10px; padding-bottom:10px">
 | |
|     <table id="compareTable" border="1" cellspacing="1" cellpadding="4">
 | |
|       <thead>
 | |
|         <tr>
 | |
|           <td>Name</td>
 | |
|           <td>Result 1 Avg (ms)</td>
 | |
|           <td>Result 2 Avg (ms)</td>
 | |
|           <td>% Diff</td>
 | |
|         </tr>
 | |
|       </thead>
 | |
|       <!-- result rows here -->
 | |
|     </table>
 | |
|     </div>
 | |
| 
 | |
| <script type="text/javascript">
 | |
| function run() {
 | |
|   var runElement = document.getElementById("run");
 | |
|   var filtersElement = document.getElementById("filters");
 | |
|   var compareElement = document.getElementById("compare");
 | |
|   var result1Element = document.getElementById("result1");
 | |
|   var result2Element = document.getElementById("result2");
 | |
| 
 | |
|   // Number of runs for each test.
 | |
|   var testRuns = 10;
 | |
| 
 | |
|   // Delay between test runs.
 | |
|   var runDelay = 0;
 | |
| 
 | |
|   // Retrieve the list of all tests.
 | |
|   var allTests = window.GetPerfTests();
 | |
| 
 | |
|   // Populated with the list of tests that will be run.
 | |
|   var tests = [];
 | |
|   var currentTest = 0;
 | |
| 
 | |
|   var testList = filtersElement.value.trim();
 | |
|   if (testList.length > 0) {
 | |
|     // Include or exclude specific tests.
 | |
|     var included = [];
 | |
|     var excluded = [];
 | |
| 
 | |
|     var testNames = testList.split(",");
 | |
| 
 | |
|     // Identify included and excluded tests.
 | |
|     for (i = 0; i < testNames.length; ++i) {
 | |
|       var testName = testNames[i].trim();
 | |
|       if (testName[0] == '-') {
 | |
|         // Exclude the test.
 | |
|         excluded.push(testName.substr(1));
 | |
|       } else {
 | |
|         // Include the test.
 | |
|         included.push(testName);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     if (included.length > 0) {
 | |
|       // Only use the included tests.
 | |
|       for (i = 0; i < allTests.length; ++i) {
 | |
|         var test = allTests[i];
 | |
|         var testName = test[0];
 | |
|         if (included.indexOf(testName) >= 0)
 | |
|           tests.push(test);
 | |
|       }
 | |
|     } else if (excluded.length > 0) {
 | |
|       // Use all tests except the excluded tests.
 | |
|       for (i = 0; i < allTests.length; ++i) {
 | |
|         var test = allTests[i];
 | |
|         var testName = test[0];
 | |
|         if (excluded.indexOf(testName) < 0)
 | |
|           tests.push(test);
 | |
|       }
 | |
|     }
 | |
|   } else {
 | |
|     // Run all tests.
 | |
|     tests = allTests;
 | |
|   }
 | |
| 
 | |
|   function updateStatusComplete() {
 | |
|     var statusBox = document.getElementById("statusBox");
 | |
|     statusBox.innerText = 'All tests completed.';
 | |
| 
 | |
|     runElement.disabled = false;
 | |
|     filtersElement.disabled = false;
 | |
|     result1Element.disabled = false;
 | |
|     result2Element.disabled = false;
 | |
|     compareElement.disabled = false;
 | |
|   }
 | |
| 
 | |
|   function updateStatus(test) {
 | |
|     var statusBox = document.getElementById("statusBox");
 | |
|     var progressBox = document.getElementById("progressBox");
 | |
| 
 | |
|     if (test.run >= test.totalRuns) {
 | |
|       statusBox.innerText = test.name + " completed.";
 | |
|       progressBox.style.display = 'none';
 | |
|     } else {
 | |
|       statusBox.innerText = test.name + " (" + test.run + "/" + test.totalRuns + ")";
 | |
|       progressBox.value = (test.run / test.totalRuns);
 | |
|       progressBox.style.display = 'inline';
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   function appendResult(test) {
 | |
|     var e = document.getElementById("resultTable");
 | |
| 
 | |
|     // Calculate the average.
 | |
|     var avg = test.total / test.totalRuns;
 | |
| 
 | |
|     // Calculate the standard deviation.
 | |
|     var sqsum = 0;
 | |
|     for (i = 0; i < test.results.length; ++i) {
 | |
|       var diff = test.results[i] - avg;
 | |
|       sqsum += diff * diff;
 | |
|     }
 | |
|     var stddev = Math.round(Math.sqrt(sqsum / test.totalRuns) * 100.0) / 100.0;
 | |
| 
 | |
|     e.insertAdjacentHTML("beforeEnd", [
 | |
|         "<tr>",
 | |
|         "<td>", test.name, "</td>",
 | |
|         "<td>", test.iterations, "</td>",
 | |
|         "<td>", avg, "</td>",
 | |
|         "<td>", test.min, "</td>",
 | |
|         "<td>", test.max, "</td>",
 | |
|         "<td>", stddev, "</td>",
 | |
|         "<td>", test.results.join(", "), "</td>",
 | |
|         "<tr>"
 | |
|         ].join(""));
 | |
| 
 | |
|     if (result1Element.value.length > 0)
 | |
|       result1Element.value += ",";
 | |
|     result1Element.value += test.name + "=" + avg;
 | |
|   }
 | |
| 
 | |
|   // Execute the test function.
 | |
|   function execTestFunc(name) {
 | |
|     return window.RunPerfTest(name);
 | |
|   }
 | |
| 
 | |
|   // Schedule the next test.
 | |
|   function nextTest(test) {
 | |
|     appendResult(test);
 | |
|     currentTest++;
 | |
|     runTest();
 | |
|   }
 | |
| 
 | |
|   // Schedule the next step for the current test.
 | |
|   function nextTestStep(test) {
 | |
|     setTimeout(function () { execTest(test); }, runDelay);
 | |
|   }
 | |
| 
 | |
|   // Perform the next step for the current test.
 | |
|   function execTest(test) {
 | |
|     updateStatus(test);
 | |
| 
 | |
|     if (!test.warmedUp) {
 | |
|       execTestFunc(test.name);
 | |
|       test.warmedUp = true;
 | |
|       return nextTestStep(test);
 | |
|     }
 | |
| 
 | |
|     if (test.run >= test.totalRuns)
 | |
|       return nextTest(test);
 | |
| 
 | |
|     var elapsed = execTestFunc(test.name);
 | |
|     test.results.push(elapsed);
 | |
| 
 | |
|     test.total += elapsed;
 | |
|     if (!test.min) test.min = elapsed;
 | |
|     else if (test.min > elapsed) test.min = elapsed;
 | |
|     if (!test.max) test.max = elapsed;
 | |
|     else if (test.max < elapsed) test.max = elapsed;
 | |
| 
 | |
|     test.run++;
 | |
| 
 | |
|     return nextTestStep(test);
 | |
|   }
 | |
| 
 | |
|   function runTest() {
 | |
|     if (currentTest == tests.length) {
 | |
|       updateStatusComplete();
 | |
|       return;
 | |
|     }
 | |
| 
 | |
|     var test = {
 | |
|         name: tests[currentTest][0],
 | |
|         iterations: tests[currentTest][1],
 | |
|         warmedUp: false,
 | |
|         total: 0,
 | |
|         totalRuns: testRuns,
 | |
|         run: 0,
 | |
|         results: []
 | |
|     };
 | |
|     setTimeout(function () { execTest(test); }, runDelay);
 | |
|   }
 | |
| 
 | |
|   // Schedule the first test.
 | |
|   if (tests.length > 0) {
 | |
|     runElement.disabled = true;
 | |
|     filtersElement.disabled = true;
 | |
|     result1Element.value = "";
 | |
|     result1Element.disabled = true;
 | |
|     result2Element.disabled = true;
 | |
|     compareElement.disabled = true;
 | |
| 
 | |
|     runTest();
 | |
|   }
 | |
| }
 | |
| 
 | |
| function compare() {
 | |
|   var result1 = document.getElementById("result1").value.trim();
 | |
|   var result2 = document.getElementById("result2").value.trim();
 | |
| 
 | |
|   if (result1.length == 0 || result2.length == 0)
 | |
|     return;
 | |
| 
 | |
|   var r1values = result1.split(",");
 | |
|   var r2values = result2.split(",");
 | |
|   for (i = 0; i < r1values.length; ++i) {
 | |
|     var r1parts = r1values[i].split("=");
 | |
|     var r1name = r1parts[0].trim();
 | |
|     var r1val = r1parts[1].trim();
 | |
| 
 | |
|     for (x = 0; x < r2values.length; ++x) {
 | |
|       var r2parts = r2values[x].split("=");
 | |
|       var r2name = r2parts[0].trim();
 | |
|       var r2val = r2parts[1].trim();
 | |
| 
 | |
|       if (r2name == r1name) {
 | |
|         appendResult(r1name, r1val, r2val);
 | |
| 
 | |
|         // Remove the matching index.
 | |
|         r2values.splice(x, 1);
 | |
|         break;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   
 | |
|   function appendResult(name, r1val, r2val) {
 | |
|     var e = document.getElementById("compareTable");
 | |
|  
 | |
|     // Calculate the percent difference.
 | |
|     var diff = Math.round(((r2val - r1val) / r1val) * 10000.0) / 100.0;
 | |
| 
 | |
|     e.insertAdjacentHTML("beforeEnd", [
 | |
|         "<tr>",
 | |
|         "<td>", name, "</td>",
 | |
|         "<td>", r1val, "</td>",
 | |
|         "<td>", r2val, "</td>",
 | |
|         "<td>", diff, "</td>",
 | |
|         "<tr>"
 | |
|         ].join(""));
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| 
 | |
|   </body>
 | |
| </html>
 |