- add sources.
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / examples / api / core / example.js
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 }