Skip to content

Commit

Permalink
Vector2 constructor benchmark (#297)
Browse files Browse the repository at this point in the history
  • Loading branch information
spydon committed Jun 20, 2023
1 parent a3aca09 commit c147038
Showing 1 changed file with 180 additions and 0 deletions.
180 changes: 180 additions & 0 deletions benchmark/vector2_bench.dart
Original file line number Diff line number Diff line change
@@ -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();
}

0 comments on commit c147038

Please sign in to comment.