@@ -8,144 +8,127 @@ import 'dart:typed_data';
8
8
import 'package:benchmark_harness/benchmark_harness.dart' ;
9
9
import 'package:vector_math/vector_math.dart' ;
10
10
11
+ Never _unreachableAssertionError () => throw AssertionError ('Unreachable' );
12
+
11
13
class ConstructorBenchmark extends BenchmarkBase {
12
14
ConstructorBenchmark () : super ('Vector2()' );
13
15
14
- static void main () {
15
- ConstructorBenchmark ().report ();
16
- }
17
-
18
16
@override
19
17
void run () {
18
+ Vector2 ? v;
20
19
for (var i = 0 ; i < 100000 ; i++ ) {
21
- Vector2 (100 , 100 );
20
+ v = Vector2 (100 , 100 );
22
21
}
22
+ if (v == null ) _unreachableAssertionError ();
23
23
}
24
24
}
25
25
26
26
class ConstructorZeroBenchmark extends BenchmarkBase {
27
27
ConstructorZeroBenchmark () : super ('Vector2.zero()' );
28
28
29
- static void main () {
30
- ConstructorZeroBenchmark ().report ();
31
- }
32
-
33
29
@override
34
30
void run () {
31
+ Vector2 ? v;
35
32
for (var i = 0 ; i < 100000 ; i++ ) {
36
- Vector2 .zero ();
33
+ v = Vector2 .zero ();
37
34
}
35
+ if (v == null ) _unreachableAssertionError ();
38
36
}
39
37
}
40
38
41
39
class ConstructorArrayBenchmark extends BenchmarkBase {
42
40
ConstructorArrayBenchmark () : super ('Vector2.array()' );
43
41
44
- static void main () {
45
- ConstructorArrayBenchmark ().report ();
46
- }
47
-
48
42
@override
49
43
void run () {
44
+ Vector2 ? v;
50
45
for (var i = 0.0 ; i < 100000 ; i++ ) {
51
- Vector2 .array ([i, i]);
46
+ v = Vector2 .array ([i, i]);
52
47
}
48
+ if (v == null ) _unreachableAssertionError ();
53
49
}
54
50
}
55
51
56
52
class ConstructorAllBenchmark extends BenchmarkBase {
57
53
ConstructorAllBenchmark () : super ('Vector2.all()' );
58
54
59
- static void main () {
60
- ConstructorAllBenchmark ().report ();
61
- }
62
-
63
55
@override
64
56
void run () {
57
+ Vector2 ? v;
65
58
for (var i = 0.0 ; i < 100000 ; i++ ) {
66
- Vector2 .all (i);
59
+ v = Vector2 .all (i);
67
60
}
61
+ if (v == null ) _unreachableAssertionError ();
68
62
}
69
63
}
70
64
71
65
class ConstructorCopyBenchmark extends BenchmarkBase {
72
66
ConstructorCopyBenchmark () : super ('Vector2.copy()' );
73
67
74
- static void main () {
75
- ConstructorCopyBenchmark ().report ();
76
- }
77
-
78
68
@override
79
69
void run () {
70
+ Vector2 ? v;
80
71
final copyFrom = Vector2 (1 , 1 );
81
72
for (var i = 0.0 ; i < 100000 ; i++ ) {
82
- Vector2 .copy (copyFrom);
73
+ v = Vector2 .copy (copyFrom);
83
74
}
75
+ if (v == null ) _unreachableAssertionError ();
84
76
}
85
77
}
86
78
87
79
class ConstructorFromFloat32ListBenchmark extends BenchmarkBase {
88
80
ConstructorFromFloat32ListBenchmark () : super ('Vector2.fromFloat32List()' );
89
81
90
- static void main () {
91
- ConstructorFromFloat32ListBenchmark ().report ();
92
- }
93
-
94
82
@override
95
83
void run () {
84
+ Vector2 ? v;
96
85
final list = Float32List .fromList ([0.0 , 0.0 ]);
97
86
for (var i = 0.0 ; i < 100000 ; i++ ) {
98
- Vector2 .fromFloat32List (list);
87
+ v = Vector2 .fromFloat32List (list);
99
88
}
89
+ if (v == null ) _unreachableAssertionError ();
100
90
}
101
91
}
102
92
103
93
class ConstructorFromBufferBenchmark extends BenchmarkBase {
104
94
ConstructorFromBufferBenchmark () : super ('Vector2.fromBuffer()' );
105
95
106
- static void main () {
107
- ConstructorFromBufferBenchmark ().report ();
108
- }
109
-
110
96
@override
111
97
void run () {
98
+ Vector2 ? v;
112
99
final buffer = Uint32List (2 ).buffer;
113
100
for (var i = 0.0 ; i < 100000 ; i++ ) {
114
- Vector2 .fromBuffer (buffer, 0 );
101
+ v = Vector2 .fromBuffer (buffer, 0 );
115
102
}
103
+ if (v == null ) _unreachableAssertionError ();
116
104
}
117
105
}
118
106
119
107
class ConstructorRandomBenchmark extends BenchmarkBase {
120
108
ConstructorRandomBenchmark () : super ('Vector2.random()' );
121
109
122
- static void main () {
123
- ConstructorRandomBenchmark ().report ();
124
- }
125
-
126
110
@override
127
111
void run () {
112
+ Vector2 ? v;
128
113
final random = math.Random ();
129
114
for (var i = 0.0 ; i < 100000 ; i++ ) {
130
- Vector2 .random (random);
115
+ v = Vector2 .random (random);
131
116
}
117
+ if (v == null ) _unreachableAssertionError ();
132
118
}
133
119
}
134
120
135
121
class SetFromBenchmark extends BenchmarkBase {
136
122
SetFromBenchmark () : super ('Vector2.setFrom()' );
137
- final Vector2 v1 = Vector2 (100 , 100 );
138
- final Vector2 v2 = Vector2 .zero ();
139
-
140
- static void main () {
141
- SetFromBenchmark ().report ();
142
- }
123
+ final Vector2 source = Vector2 (100 , 100 );
143
124
144
125
@override
145
126
void run () {
127
+ var v = Vector2 .zero ();
146
128
for (var i = 0 ; i < 100000 ; i++ ) {
147
- v2. setFrom (v1 );
129
+ v = v.. setFrom (source );
148
130
}
131
+ if (v.x != 100 || v.y != 100 ) _unreachableAssertionError ();
149
132
}
150
133
}
151
134
@@ -154,27 +137,28 @@ class DotProductBenchmark extends BenchmarkBase {
154
137
final Vector2 v1 = Vector2 (100 , 100 );
155
138
final Vector2 v2 = Vector2 (100 , 200 );
156
139
157
- static void main () {
158
- DotProductBenchmark ().report ();
159
- }
160
-
161
140
@override
162
141
void run () {
142
+ var r = .0 ;
163
143
for (var i = 0 ; i < 100000 ; i++ ) {
164
- v1.dot (v2);
144
+ r += v1.dot (v2);
165
145
}
146
+ if (r != 30000 * 100000 ) _unreachableAssertionError ();
166
147
}
167
148
}
168
149
169
150
void main () {
170
- ConstructorBenchmark .main ();
171
- ConstructorZeroBenchmark .main ();
172
- ConstructorArrayBenchmark .main ();
173
- ConstructorAllBenchmark .main ();
174
- ConstructorCopyBenchmark .main ();
175
- ConstructorFromFloat32ListBenchmark .main ();
176
- ConstructorFromBufferBenchmark .main ();
177
- ConstructorRandomBenchmark .main ();
178
- SetFromBenchmark .main ();
179
- DotProductBenchmark .main ();
151
+ void report (BenchmarkBase Function () create) => create ().report ();
152
+ [
153
+ ConstructorBenchmark .new ,
154
+ ConstructorZeroBenchmark .new ,
155
+ ConstructorArrayBenchmark .new ,
156
+ ConstructorAllBenchmark .new ,
157
+ ConstructorCopyBenchmark .new ,
158
+ ConstructorFromFloat32ListBenchmark .new ,
159
+ ConstructorFromBufferBenchmark .new ,
160
+ ConstructorRandomBenchmark .new ,
161
+ SetFromBenchmark .new ,
162
+ DotProductBenchmark .new ,
163
+ ].forEach (report);
180
164
}
0 commit comments