1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var itrMax = 1000; 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var itrCount = 0; 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var itrSend = new Float64Array(itrMax); 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var itrNaCl = new Float64Array(itrMax); 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var itrRecv = new Float64Array(itrMax); 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var delay = 0; 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 12424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)function getTimeInMilliseconds() { 13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return (new Date()).getTime(); 14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)} 15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)function attachListeners() { 17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) document.getElementById('start').addEventListener('click', startTest); 18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) countEl = document.getElementById('count'); 19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) countEl.textContent = itrMax; 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)function startTest() { 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (common.naclModule) { 24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) var startEl = document.getElementById('start'); 25424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) startEl.disabled = true; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) var delayEl = document.getElementById('delay'); 28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) delay = parseInt(delayEl.value, 10); 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) common.updateStatus('Running Test'); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) itrCount = 0; 32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) itrSend[0] = getTimeInMilliseconds(); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) common.naclModule.postMessage(delay); 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)function setStats(nacl, compute, total) { 38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) var statNaClEl = document.getElementById('NaCl'); 39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) var statRoundEl = document.getElementById('Round'); 40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) var statTotalEl = document.getElementById('Total'); 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) statNaClEl.textContent = (nacl / itrMax) + ' ms'; 43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) statRoundEl.textContent = (compute / itrMax) + ' ms'; 44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) statTotalEl.textContent = (total / itrMax) + ' ms'; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Called by the common.js module. 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)function handleMessage(message_event) { 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Convert NaCl Seconds elapsed to MS 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) itrNaCl[itrCount] = message_event.data * 1000.0; 51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) itrRecv[itrCount] = getTimeInMilliseconds(); 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) itrCount++; 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if (itrCount === itrMax) { 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) common.updateStatus('Test Finished'); 56424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) var startEl = document.getElementById('start'); 57424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) startEl.disabled = false; 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var naclMS = 0.0; 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var computeMS = 0.0; 61424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) for (var i = 0; i < itrMax; i++) { 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) naclMS += itrNaCl[i]; 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) computeMS += itrRecv[i] - itrSend[i]; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) setStats(naclMS, computeMS, itrRecv[itrMax - 1] - itrSend[0]); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 68424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) itrSend[itrCount] = getTimeInMilliseconds(); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) common.naclModule.postMessage(delay); 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 72