1<head> 2<style> 3tr { 4 white-space: nowrap; 5} 6.results { 7 text-align: right; 8 min-width: 6em; 9 color: black; 10} 11</style> 12<script> 13if (!chrome.benchmarking) { 14 alert("Warning: Looks like you forgot to run chrome with " + 15 " --enable-benchmarking set."); 16 return; 17} 18 19function setChildTextNode(elementId, text) { 20 document.getElementById(elementId).innerText = text; 21} 22 23// Tests the roundtrip time of sendRequest(). 24function testRequest() { 25 setChildTextNode("resultsRequest", "running..."); 26 27 chrome.tabs.getSelected(null, function(tab) { 28 var timer = new chrome.Interval(); 29 timer.start(); 30 31 chrome.tabs.sendRequest(tab.id, {counter: 1}, function handler(response) { 32 if (response.counter < 1000) { 33 chrome.tabs.sendRequest(tab.id, {counter: response.counter}, handler); 34 } else { 35 timer.stop(); 36 var usec = Math.round(timer.microseconds() / response.counter); 37 setChildTextNode("resultsRequest", usec + "usec"); 38 } 39 }); 40 }); 41} 42 43// Tests the roundtrip time of Port.postMessage() after opening a channel. 44function testConnect() { 45 setChildTextNode("resultsConnect", "running..."); 46 47 chrome.tabs.getSelected(null, function(tab) { 48 var timer = new chrome.Interval(); 49 timer.start(); 50 51 var port = chrome.tabs.connect(tab.id); 52 port.postMessage({counter: 1}); 53 port.onMessage.addListener(function getResp(response) { 54 if (response.counter < 1000) { 55 port.postMessage({counter: response.counter}); 56 } else { 57 timer.stop(); 58 var usec = Math.round(timer.microseconds() / response.counter); 59 setChildTextNode("resultsConnect", usec + "usec"); 60 } 61 }); 62 }); 63} 64</script> 65</head> 66<body> 67<table> 68 <tr> 69 <td><button onclick="testRequest()">Measure sendRequest</button></td> 70 <td id="resultsRequest" class="results">(results)</td> 71 </tr> 72 <tr> 73 <td><button onclick="testConnect()">Measure postMessage</button></td> 74 <td id="resultsConnect" class="results">(results)</td> 75 </tr> 76</table> 77</body> 78