Needs a lot of cleanup. Data has been de-duplicated, and where identical copies existed, one of them has been replaced with a symlink. Some files have been excluded, such as binaries, installers and debug dumps. Some of that may still be present.
127 lines
No EOL
4.3 KiB
JavaScript
127 lines
No EOL
4.3 KiB
JavaScript
//
|
|
// Created by Seiji Emery on 9/4/15
|
|
// Copyright 2015 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
Script.include("perfTest.js");
|
|
|
|
// Native vec3 (for comparison)
|
|
var Native = {};
|
|
(function () {
|
|
Native.Vec3 = function (x, y, z) {
|
|
this.x = x || 0.0;
|
|
this.y = y || 0.0;
|
|
this.z = z || 0.0;
|
|
}
|
|
Native.Vec3.prototype.add = function (other) {
|
|
this.x += other.x;
|
|
this.y += other.y;
|
|
this.z += other.z;
|
|
}
|
|
Native.Vec3.prototype.distance = function (other) {
|
|
var rx = this.x - other.x;
|
|
var ry = this.y - other.y;
|
|
var rz = this.z - other.z;
|
|
return Math.sqrt(rx * rx + ry * ry + rz * rz);
|
|
}
|
|
Native.Vec3.prototype.dist2 = function (other) {
|
|
var rx = this.x - other.x;
|
|
var ry = this.y - other.y;
|
|
var rz = this.z - other.z;
|
|
return rx * rx + ry * ry + rz * rz;
|
|
}
|
|
|
|
Native.Quaternion = function (x, y, z, w) {
|
|
this.x = x || 0.0;
|
|
this.y = y || 0.0;
|
|
this.z = z || 0.0;
|
|
this.w = w || 0.0;
|
|
}
|
|
// Pulled from THREE.js
|
|
Native.Quaternion.prototype.multiply = function(quat2) {
|
|
var qax = this.x, qay = this.y, qaz = this.z, qaw = this.w,
|
|
qbx = quat2.x, qby = quat2.y, qbz = quat2.z, qbw = quat2.w;
|
|
this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;
|
|
this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;
|
|
this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;
|
|
this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;
|
|
return this;
|
|
}
|
|
})();
|
|
|
|
// Create + run tests
|
|
(function () {
|
|
var mathTests = new TestRunner();
|
|
var foo;
|
|
|
|
print("math tests:");
|
|
var iterations = [ 1000, 10000, 100000, 1000000 ];
|
|
|
|
print("builtin Vec3 + Quat (wrapped glm::vec3 + glm::quat)");
|
|
var builtinTests = new TestRunner();
|
|
builtinTests.addTestCase('Vec3.sum')
|
|
.run(function () {
|
|
foo = Vec3.sum({x: 10, y: 12, z: 3}, {x: 1, y: 2, z: 4});
|
|
})
|
|
builtinTests.addTestCase('Vec3.distance')
|
|
.run(function () {
|
|
foo = Vec3.distance({x: 1209, y: 298, z: 238}, {x: 239, y: 20, z: 23})
|
|
})
|
|
builtinTests.addTestCase('Quat.multiply')
|
|
.run(function () {
|
|
foo = Quat.multiply({x: 2190.0, y: 2109.0, z: 1209.0, w: 829.0}, {x: -1293.0, y: 1029.1, z: 2190.1, w: 129.0})
|
|
});
|
|
builtinTests.runAllTestsWithIterations([ 1e3, 1e4, 1e5 ], 1e3, 10);
|
|
|
|
print("");
|
|
print("native JS Vec3 + Quaternion");
|
|
var nativeTests = new TestRunner();
|
|
nativeTests.addTestCase('Native Vec3.sum')
|
|
.run(function () {
|
|
foo = new Native.Vec3(10, 12, 3).add(new Native.Vec3(1, 2, 4));
|
|
})
|
|
nativeTests.addTestCase('Native Vec3.distance')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298, 238).distance(new Native.Vec3(239, 20, 23));
|
|
})
|
|
nativeTests.addTestCase('Native Vec3.dist2')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298, 238).dist2(new Native.Vec3(239, 20, 23));
|
|
})
|
|
nativeTests.addTestCase('Native Quat.multiply')
|
|
.run(function () {
|
|
foo = new Native.Quaternion(2190.0, 2109.0, 1209.0, 829.0).multiply(new Native.Quaternion(-1293.0, 1029.1, 2190.1, 129.0));
|
|
});
|
|
nativeTests.runAllTestsWithIterations([ 1e3, 1e4, 1e5, 1e6 ], 1e6, 10);
|
|
|
|
print("");
|
|
print("no-ops (for test assignment / construction overhead)")
|
|
mathTests.addTestCase('no-op')
|
|
.run(function(){});
|
|
mathTests.addTestCase('assign null')
|
|
.run(function () {
|
|
foo = null;
|
|
});
|
|
mathTests.addTestCase('assign object')
|
|
.run(function () {
|
|
foo = { x: 1902, y: 129, z: 21 };
|
|
});
|
|
mathTests.addTestCase('Native Vec3.construct -- 3 args')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298, 238);
|
|
});
|
|
mathTests.addTestCase('Native Vec3.construct -- 2 args')
|
|
.run(function () {
|
|
foo = new Native.Vec3(1209, 298);
|
|
});
|
|
mathTests.addTestCase('Native Vec3.construct -- no args')
|
|
.run(function() {
|
|
foo = new Native.Vec3();
|
|
});
|
|
|
|
mathTests.runAllTestsWithIterations([1e3, 1e4, 1e5, 1e6], 1e6, 10);
|
|
mathTests.writeResultsToLog();
|
|
})(); |