example.js revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
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
5var itrMax = 1000;
6var itrCount = 0;
7var itrSend = new Float64Array(itrMax);
8var itrNaCl = new Float64Array(itrMax);
9var itrRecv = new Float64Array(itrMax);
10var delay = 0;
11
12function getTimeInMilliseconds() {
13  return (new Date()).getTime();
14}
15
16function attachListeners() {
17  document.getElementById('start').addEventListener('click', startTest);
18  countEl = document.getElementById('count');
19  countEl.textContent = itrMax;
20}
21
22function 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
37function 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.
48function 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