test/examples/array-micro.js

changeset 0
b1a7da25b547
child 952
6d5471a497fb
equal deleted inserted replaced
-1:000000000000 0:b1a7da25b547
1 /*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * - Neither the name of Oracle nor the names of its
16 * contributors may be used to endorse or promote products derived
17 * from this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32
33
34 function bench(name, func) {
35 var start = Date.now();
36 for (var iter = 0; iter < 5e6; iter++) {
37 func();
38 }
39 print((Date.now() - start) + "\t" + name);
40 }
41
42 bench("[]", function() {
43 [];
44 [];
45 [];
46 });
47
48 bench("[1, 2, 3]", function() {
49 [1, 2, 3];
50 [1, 2, 3];
51 [1, 2, 3];
52 });
53
54 bench("[1 .. 20]", function() {
55 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
56 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
57 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
58 });
59
60 bench("new Array()", function() {
61 new Array();
62 new Array();
63 new Array();
64 });
65
66
67 bench("new Array(1, 2, 3)", function() {
68 new Array(1, 2, 3);
69 new Array(1, 2, 3);
70 new Array(1, 2, 3);
71 });
72
73 bench("new Array(10)", function() {
74 new Array(10);
75 new Array(10);
76 new Array(10);
77 });
78
79 var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
80
81 bench("get", function() {
82 array[0];
83 array[3];
84 array[6];
85 });
86
87 bench("set", function() {
88 array[0] = 0;
89 array[3] = 3;
90 array[6] = 6;
91 });
92
93 bench("push", function() {
94 var arr = [1, 2, 3];
95 arr.push(4);
96 arr.push(5);
97 arr.push(6);
98 });
99
100 bench("pop", function() {
101 var arr = [1, 2, 3];
102 arr.pop();
103 arr.pop();
104 arr.pop();
105 });
106
107 bench("splice", function() {
108 [1, 2, 3].splice(0, 2, 5, 6, 7);
109 });
110
111 var all = function(e) { return true; };
112 var none = function(e) { return false; };
113
114 bench("filter all", function() {
115 array.filter(all);
116 });
117
118 bench("filter none", function() {
119 array.filter(none);
120 });
121
122 var up = function(a, b) { return a > b ? 1 : -1; };
123 var down = function(a, b) { return a < b ? 1 : -1; };
124
125 bench("sort up", function() {
126 [1, 2, 3, 4].sort(up);
127 });
128
129 bench("sort down", function() {
130 [1, 2, 3, 4].sort(down);
131 });
132

mercurial