MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1/*
2 * Array creation micro-bench
3 */
4
5function get_clock() {
6 if (typeof performance !== 'undefined' && performance.now) return performance.now();
7 return Date.now();
8}
9
10function run_case(name, fn, iters) {
11 var i;
12 var t0 = get_clock();
13 for (i = 0; i < iters; i++) fn();
14 var dt = get_clock() - t0;
15 console.log(name + ': ' + dt.toFixed(2) + ' ms');
16}
17
18function create_assign() {
19 var tab = [];
20 for (var i = 0; i < 1000; i++) tab[i] = i;
21}
22
23function create_push() {
24 var tab = [];
25 for (var i = 0; i < 1000; i++) tab.push(i);
26}
27
28function create_prealloc_assign() {
29 var tab = [];
30 tab.length = 1000;
31 for (var i = 0; i < 1000; i++) tab[i] = i;
32}
33
34function create_prealloc_push() {
35 var tab = [];
36 tab.length = 1000;
37 for (var i = 0; i < 1000; i++) tab.push(i);
38}
39
40function main() {
41 var iters = 200;
42 run_case('create_assign', create_assign, iters);
43 run_case('create_push', create_push, iters);
44 run_case('create_prealloc_assign', create_prealloc_assign, iters);
45 run_case('create_prealloc_push', create_prealloc_push, iters);
46
47 var arr = [];
48 var t0 = get_clock();
49 for (var i = 0; i < 20000; i++) {
50 arr.push(i);
51 }
52 var dt = get_clock() - t0;
53 console.log('push_20k: ' + dt.toFixed(2) + ' ms');
54 console.log('done, arr length: ' + arr.length);
55 console.log('first element: ' + arr[0]);
56 console.log('last element: ' + arr[19999]);
57}
58
59main();