UNPKG

typescript-cubic-spline

Version:
64 lines (63 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Spline_1 = require("./Spline"); //const Spline = require('.'); describe("spline", function () { it("should return a correct value of type number", function () { var xs = [1, 2, 3, 4, 5]; var ys = [9, 3, 6, 2, 4]; // new a Spline object var spline = new Spline_1.default(xs, ys); // get Y at arbitrary X expect(spline.at(1.4)).toBe(5.586); // interpolate a line at a higher resolution for (var i = 0; i < 50; i++) { expect(spline.at(i * 0.1)).toEqual(expect.any(Number)); } }); }); describe("speed", function () { it("should run quickly on relatively large data, too", function () { var arraySizes = [10, 100, 1000, 2000, 4000]; var arraySpeed = []; var arrayInitialization = []; var multiplicationFactor = 10; // array.length * multiplicationFactor = number of times the .at()-function is executed on the same array for (var i = 0; i < arraySizes.length; i++) { // generate x-y-set var setX = []; var setY = []; var x = 0; var y = 0; for (var j = 0; j < arraySizes[i]; j++) { x += 0.05; y = Math.sin(x); setX.push(Number(x.toFixed(2))); setY.push(Number(y.toFixed(4))); } // run cubic-spline-interpolation var initializationStart = new Date(); var spline = new Spline_1.default(setX, setY); var initializationEnd = new Date(); // interpolate spline at 10x resolution var atStart = new Date(); for (var j = 0; j < arraySizes[i] * multiplicationFactor; j++) { spline.at(j * 0.05 + 0.01); // create a small offset to the actual data set } var atEnd = new Date(); arrayInitialization[i] = Number(initializationEnd) - Number(initializationStart); arraySpeed[i] = Number(atEnd) - Number(atStart); } // print result console.log("elements in | times .at() | initialization | execution time"); console.log("dataset | is used | time of spline | of all .at()'s"); console.log("------------|-------------|----------------|---------------"); for (var i = 0; i < arraySizes.length; i++) { var size = arraySizes[i].toString().padEnd(11); var at = (arraySizes[i] * multiplicationFactor).toString().padStart(11); var initializationTime = arrayInitialization[i].toString().padStart(12); var atTime = arraySpeed[i].toString().padStart(12); console.log(size + " | " + at + " | " + initializationTime + "ms | " + atTime + "ms"); } }); });