test/examples/int-micro.js

changeset 219
a6c53280343d
parent 0
b1a7da25b547
child 962
ac62e33a99b0
equal deleted inserted replaced
218:32036918585d 219:a6c53280343d
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 function bench(name, func) {
34 var start = Date.now();
35 for (var iter = 0; iter < 5000000; iter++) {
36 func();
37 }
38 print(name + "\t" + (Date.now() - start));
39 }
40
41 function uint32(value) {
42 return function() {
43 value >>> 0;
44 value >>> 0;
45 value >>> 0;
46 value >>> 0;
47 value >>> 0;
48 value >>> 0;
49 value >>> 0;
50 value >>> 0;
51 value >>> 0;
52 value >>> 0;
53 value >>> 0;
54 value >>> 0;
55 value >>> 0;
56 value >>> 0;
57 value >>> 0;
58 };
59 }
60
61 function int32(value) {
62 return function() {
63 value >> 0;
64 value >> 0;
65 value >> 0;
66 value >> 0;
67 value >> 0;
68 value >> 0;
69 value >> 0;
70 value >> 0;
71 value >> 0;
72 value >> 0;
73 value >> 0;
74 value >> 0;
75 value >> 0;
76 value >> 0;
77 value >> 0;
78 };
79 }
80
81 print("\nToUint32");
82 for (var i = 1; i < 3; i++) {
83 bench("infinity ", uint32(Infinity));
84 bench("infinity neg ", uint32(-Infinity));
85 bench("nan ", uint32(NaN));
86 bench("small ", uint32(1));
87 bench("small neg ", uint32(-1));
88 bench("small frac ", uint32(1.5));
89 bench("small neg frac", uint32(-1.5));
90 bench("large ", uint32(9223372036854775807));
91 bench("large neg ", uint32(-9223372036854775808));
92 }
93
94 print("\nToInt32");
95 for (var i = 1; i < 3; i++) {
96 bench("infinity ", int32(Infinity));
97 bench("infinity neg ", int32(-Infinity));
98 bench("nan ", int32(NaN));
99 bench("small ", int32(1));
100 bench("small neg ", int32(-1));
101 bench("small frac ", int32(1.5));
102 bench("small neg frac", int32(-1.5));
103 bench("large ", int32(9223372036854775807));
104 bench("large neg ", int32(-9223372036854775808));
105 }
106
107

mercurial