/
performance.js
275 lines (211 loc) · 4.48 KB
/
performance.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
// Performance test cases for eval vs regex
var val = 'Date(102453689)';
var i;
console.time('regex');
for (var i=0;i<10000; i++) {
var date = new Date(+val.match(/\d+/g)[0]);
}
console.timeEnd('regex');
console.time('eval');
for(i=0;i<10000;i++){
date = eval('new '+val);
}
console.timeEnd('eval');
//chrome
regex: 19.831ms
eval: 458.662ms
regex: 28.011ms
eval: 534.229ms
//Mozilla
regex: 24.35ms
eval: 8721.74ms
regex: 23.63ms
eval: 8368.6ms
//IE
regex: 29.051ms
eval: 27.693ms
regex: 37.482ms
eval: 41.864ms
//Performance test cases for native to jQuery loop
var array = new Array ();
for (var i=0; i<10000; i++) {
array[i] = 0;
}
console.time('native');
var l = array.length;
for (var i=0;i<l; i++) {
array[i] = i;
}
console.timeEnd('native');
console.time('jquery');
$.each (array, function (i) {
array[i] = i;
});
console.timeEnd('jquery');
//Chrome
native: 1.043ms
jquery: 1.733ms
native: 0.672ms
jquery: 2.585ms
//Mozilla
native: 40.77ms
jquery: 6.96ms
native: 44.24ms
jquery: 6.43ms
//IE
native: 4.927ms
jquery: 5.821ms
native: 12.187ms
jquery: 14.34ms
//Performance test cases for native for to Aray.prototype.forEach
var array = new Array ();
for (var i=0; i<10000; i++) {
array[i] = 0;
}
console.time('native');
for (var i=0;i<array.length; i++){
array[i] = i;
}
console.timeEnd('native');
console.time('Array.prototype');
Array.prototype.forEach.call(array, function (i) {
array[i] = i;
});
console.timeEnd('Array.prototype');
//Chrome
native: 0.194ms
Array.prototype: 0.312ms
native: 0.198ms
Array.prototype: 0.313ms
//Mozilla
native: 19.37ms
Array.prototype: 2.57ms
native: 18.72ms
Array.prototype: 2.5ms
//IE
native: 3.081ms
Array.prototype: 1.357ms
native: 3.007ms
Array.prototype: 1.38ms
//Performance test cases for forEach to Aray.prototype.forEach
var array = new Array ();
for (var i=0; i<10000; i++) {
array[i] = 0;
}
console.time('forEach');
array.forEach(function(val , i){
array[i] = i;
});
console.timeEnd('forEach');
console.time('Array.prototype');
Array.prototype.forEach.call(array, function (i) {
array[i] = i;
});
console.timeEnd('Array.prototype');
//chrome
forEach: 2.946ms
Array.prototype: 2.319ms
forEach: 2.692ms
Array.prototype: 2.233ms
//mozilla
forEach: 2.75ms
Array.prototype: 2.52ms
forEach: 2.71ms
Array.prototype: 2.17ms
//IE
forEach: 1.39ms
Array.prototype: 1.41ms
forEach: 1.454ms
Array.prototype: 1.442ms
// $ vs querySelector for ID
var i;
console.time('jquery')
for(i=0;i<10000;i++) $('#cboxNext')
console.timeEnd('jquery')
console.time('native')
for(i=0;i<10000;i++) document.querySelector('#cboxNext');
console.timeEnd('native');
//chrome
jquery: 9.415ms
native: 1.763ms
jquery: 8.118ms
native: 1.719ms
//mozilla[ Sometimes same as IE result]
jquery: 19.09ms
native: 19.54ms
jquery: 18.81ms
native: 19.21ms
//IE
jquery: 24.944ms
native: 17.01ms
jquery: 25.226ms
native: 17.386ms
// querySelector vs getElementByID
var i;
console.time('querySelector');
for(i=0;i<10000;i++) document.querySelector('#cboxNext')
console.timeEnd('querySelector')
console.time('getElementById')
for(i=0;i<10000;i++) document.getElementById('#cboxNext');
console.timeEnd('getElementById');
//chrome
querySelector: 1.699ms
getElementById: 0.950ms
querySelector: 1.709ms
getElementById: 0.959ms
//mozilla
querySelector: 20.08ms
getElementById: 18.3ms
querySelector: 19.89ms
getElementById: 18.27ms
//IE
querySelector: 16.908ms
getElementById: 9.957ms
querySelector: 17.2ms
getElementById: 10.361ms
// $ vs querySelectorAll for class
var i;
console.time('jquery')
for(i=0;i<10000;i++) $('.icon-group')
console.timeEnd('jquery')
console.time('native')
for(i=0;i<10000;i++) document.querySelectorAll('.icon-group');
console.timeEnd('native');
//chrome
jquery: 12.580ms
native: 48.303ms
jquery: 25.094ms
native: 50.294ms
//mozilla
jquery: 40.22ms
native: 115.33ms
jquery: 39.58ms
native: 116.2ms
//IE
jquery: 54.369ms
native: 204.17ms
jquery: 55.451ms
native: 219.433ms
// $ vs getElementsByClassName
var i;
console.time('jquery')
for(i=0;i<10000;i++) $('.icon-group')
console.timeEnd('jquery')
console.time('native')
for(i=0;i<10000;i++) document.getElementsByClassName('.icon-group');
console.timeEnd('native');
//chrome
jquery: 12.270ms
native: 1.106ms
jquery: 14.099ms
native: 1.139ms
//Mozilla
jquery: 41.19ms
native: 18.59ms
jquery: 40.4ms
native: 19.18ms
//IE
jquery: 54.081ms
native: 11.616ms
jquery: 55.722ms
native: 13.237ms