Home | History | Annotate | Download | only in core
      1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 var itrMax = 1000;
      6 var itrCount = 0;
      7 var itrSend = new Float64Array(itrMax);
      8 var itrNaCl = new Float64Array(itrMax);
      9 var itrRecv = new Float64Array(itrMax);
     10 var delay = 0;
     11 
     12 function getTimeInMilliseconds() {
     13   return (new Date()).getTime();
     14 }
     15 
     16 function attachListeners() {
     17   document.getElementById('start').addEventListener('click', startTest);
     18   countEl = document.getElementById('count');
     19   countEl.textContent = itrMax;
     20 }
     21 
     22 function startTest() {
     23   if (common.naclModule) {
     24     var startEl = document.getElementById('start');
     25     startEl.disabled = true;
     26 
     27     var delayEl = document.getElementById('delay');
     28     delay = parseInt(delayEl.value, 10);
     29 
     30     common.updateStatus('Running Test');
     31     itrCount = 0;
     32     itrSend[0] = getTimeInMilliseconds();
     33     common.naclModule.postMessage(delay);
     34   }
     35 }
     36 
     37 function setStats(nacl, compute, total) {
     38   var statNaClEl = document.getElementById('NaCl');
     39   var statRoundEl = document.getElementById('Round');
     40   var statTotalEl = document.getElementById('Total');
     41 
     42   statNaClEl.textContent = (nacl / itrMax) + ' ms';
     43   statRoundEl.textContent = (compute / itrMax) + ' ms';
     44   statTotalEl.textContent = (total / itrMax) + ' ms';
     45 }
     46 
     47 // Called by the common.js module.
     48 function handleMessage(message_event) {
     49   // Convert NaCl Seconds elapsed to MS
     50   itrNaCl[itrCount] = message_event.data * 1000.0;
     51   itrRecv[itrCount] = getTimeInMilliseconds();
     52   itrCount++;
     53 
     54   if (itrCount === itrMax) {
     55     common.updateStatus('Test Finished');
     56     var startEl = document.getElementById('start');
     57     startEl.disabled = false;
     58 
     59     var naclMS = 0.0;
     60     var computeMS = 0.0;
     61     for (var i = 0; i < itrMax; i++) {
     62       naclMS += itrNaCl[i];
     63       computeMS += itrRecv[i] - itrSend[i];
     64     }
     65 
     66     setStats(naclMS, computeMS, itrRecv[itrMax - 1] - itrSend[0]);
     67   } else {
     68     itrSend[itrCount] = getTimeInMilliseconds();
     69     common.naclModule.postMessage(delay);
     70   }
     71 }
     72