-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathi++_vs_++i.js
More file actions
80 lines (71 loc) · 2.16 KB
/
i++_vs_++i.js
File metadata and controls
80 lines (71 loc) · 2.16 KB
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
/*
Compara la velocidad de i++ vs la de ++i
*/
function testPre () {
var i= 0;
var n= kLoops;
var t= Date.now();
while (n--) {
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i;
}
return [Date.now()- t, i];
}
function testPost () {
var i= 0;
var n= kLoops;
var t= Date.now();
while (n--) {
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
i++, i++, i++, i++, i++, i++, i++, i++, i++, i++;
}
return [Date.now()- t, i];
}
function display () {
console.log([
"i++: "+ (postAcumulador*1e6/ctr).toFixed(2)+ "ns",
"++i: "+ (preAcumulador*1e6/ctr).toFixed(2)+ "ns",
"COUNT: "+ (ctr / 1e6).toFixed(1)+ " Millions"
]);
}
var kLoops= 1e5;
var kTargetT= 444;
kLoops= Math.floor(kLoops* (kTargetT/ testPre()[0]));
kLoops= Math.floor(kLoops* (kTargetT/ testPre()[0]));
kLoops= Math.floor(kLoops* (kTargetT/ testPre()[0]));
console.log("kLoops -> "+ kLoops);
var ctr= 0;
var preAcumulador= 0;
var postAcumulador= 0;
(function tester () {
var pre, post;
if (tester.flag= !tester.flag) {
post= testPost();
pre= testPre();
} else {
pre= testPre();
post= testPost();
}
if (pre[1] !== post[1]) throw Error("FALLO");
preAcumulador+= pre[0];
postAcumulador+= post[0];
ctr+= pre[1];
display();
setTimeout(tester, 99);
})();