`Vector2` constructor benchmark (#297)

diff --git a/benchmark/vector2_bench.dart b/benchmark/vector2_bench.dart
new file mode 100644
index 0000000..8fa328c
--- /dev/null
+++ b/benchmark/vector2_bench.dart
@@ -0,0 +1,180 @@
+// Copyright (c) 2015, Google Inc. Please see the AUTHORS file for details.
+// All rights reserved. Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+import 'dart:math' as math;
+import 'dart:typed_data';
+
+import 'package:benchmark_harness/benchmark_harness.dart';
+import 'package:vector_math/vector_math.dart';
+
+class ConstructorBenchmark extends BenchmarkBase {
+  ConstructorBenchmark() : super('Vector2()');
+
+  static void main() {
+    ConstructorBenchmark().report();
+  }
+
+  @override
+  void run() {
+    for (var i = 0; i < 100000; i++) {
+      Vector2(100, 100);
+    }
+  }
+}
+
+class ConstructorZeroBenchmark extends BenchmarkBase {
+  ConstructorZeroBenchmark() : super('Vector2.zero()');
+
+  static void main() {
+    ConstructorZeroBenchmark().report();
+  }
+
+  @override
+  void run() {
+    for (var i = 0; i < 100000; i++) {
+      Vector2.zero();
+    }
+  }
+}
+
+class ConstructorArrayBenchmark extends BenchmarkBase {
+  ConstructorArrayBenchmark() : super('Vector2.array()');
+
+  static void main() {
+    ConstructorArrayBenchmark().report();
+  }
+
+  @override
+  void run() {
+    for (var i = 0.0; i < 100000; i++) {
+      Vector2.array([i, i]);
+    }
+  }
+}
+
+class ConstructorAllBenchmark extends BenchmarkBase {
+  ConstructorAllBenchmark() : super('Vector2.all()');
+
+  static void main() {
+    ConstructorAllBenchmark().report();
+  }
+
+  @override
+  void run() {
+    for (var i = 0.0; i < 100000; i++) {
+      Vector2.all(i);
+    }
+  }
+}
+
+class ConstructorCopyBenchmark extends BenchmarkBase {
+  ConstructorCopyBenchmark() : super('Vector2.copy()');
+
+  static void main() {
+    ConstructorCopyBenchmark().report();
+  }
+
+  @override
+  void run() {
+    final copyFrom = Vector2(1, 1);
+    for (var i = 0.0; i < 100000; i++) {
+      Vector2.copy(copyFrom);
+    }
+  }
+}
+
+class ConstructorFromFloat32ListBenchmark extends BenchmarkBase {
+  ConstructorFromFloat32ListBenchmark() : super('Vector2.fromFloat32List()');
+
+  static void main() {
+    ConstructorFromFloat32ListBenchmark().report();
+  }
+
+  @override
+  void run() {
+    final list = Float32List.fromList([0.0, 0.0]);
+    for (var i = 0.0; i < 100000; i++) {
+      Vector2.fromFloat32List(list);
+    }
+  }
+}
+
+class ConstructorFromBufferBenchmark extends BenchmarkBase {
+  ConstructorFromBufferBenchmark() : super('Vector2.fromBuffer()');
+
+  static void main() {
+    ConstructorFromBufferBenchmark().report();
+  }
+
+  @override
+  void run() {
+    final buffer = Uint32List(2).buffer;
+    for (var i = 0.0; i < 100000; i++) {
+      Vector2.fromBuffer(buffer, 0);
+    }
+  }
+}
+
+class ConstructorRandomBenchmark extends BenchmarkBase {
+  ConstructorRandomBenchmark() : super('Vector2.random()');
+
+  static void main() {
+    ConstructorRandomBenchmark().report();
+  }
+
+  @override
+  void run() {
+    final random = math.Random();
+    for (var i = 0.0; i < 100000; i++) {
+      Vector2.random(random);
+    }
+  }
+}
+
+class SetFromBenchmark extends BenchmarkBase {
+  SetFromBenchmark() : super('Vector2.setFrom()');
+  final Vector2 v1 = Vector2(100, 100);
+  final Vector2 v2 = Vector2.zero();
+
+  static void main() {
+    SetFromBenchmark().report();
+  }
+
+  @override
+  void run() {
+    for (var i = 0; i < 100000; i++) {
+      v2.setFrom(v1);
+    }
+  }
+}
+
+class DotProductBenchmark extends BenchmarkBase {
+  DotProductBenchmark() : super('Vector2.dot()');
+  final Vector2 v1 = Vector2(100, 100);
+  final Vector2 v2 = Vector2(100, 200);
+
+  static void main() {
+    DotProductBenchmark().report();
+  }
+
+  @override
+  void run() {
+    for (var i = 0; i < 100000; i++) {
+      v1.dot(v2);
+    }
+  }
+}
+
+void main() {
+  ConstructorBenchmark.main();
+  ConstructorZeroBenchmark.main();
+  ConstructorArrayBenchmark.main();
+  ConstructorAllBenchmark.main();
+  ConstructorCopyBenchmark.main();
+  ConstructorFromFloat32ListBenchmark.main();
+  ConstructorFromBufferBenchmark.main();
+  ConstructorRandomBenchmark.main();
+  SetFromBenchmark.main();
+  DotProductBenchmark.main();
+}