diff --git a/unit-tests/matrix-timing-tests.cpp b/unit-tests/matrix-timing-tests.cpp index 9c01347..0722e0c 100644 --- a/unit-tests/matrix-timing-tests.cpp +++ b/unit-tests/matrix-timing-tests.cpp @@ -8,6 +8,7 @@ // any other libraries #include #include +#include // basically re-run all of the matrix tests with huge matrices and time the // results. @@ -29,13 +30,13 @@ TEST_CASE("Timing Tests", "Matrix") { Matrix<4, 4> mat5{}; SECTION("Addition") { - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat3 = mat1 + mat2; } } SECTION("Subtraction") { - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat3 = mat1 - mat2; } } @@ -47,19 +48,19 @@ TEST_CASE("Timing Tests", "Matrix") { } SECTION("Scalar Multiplication") { - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat3 = mat1 * 3; } } SECTION("Element Multiply") { - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat1.ElementMultiply(mat2, mat3); } } SECTION("Element Divide") { - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat1.ElementDivide(mat2, mat3); } } @@ -68,52 +69,59 @@ TEST_CASE("Timing Tests", "Matrix") { // what about matrices of 0,0 or 1,1? // minor matrix for 2x2 matrix Matrix<49, 49> minorMat1{}; - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat1.MinorMatrix(minorMat1, 0, 0); } } SECTION("Determinant") { - for (uint32_t i{0}; i < 100000; i++) { + for (uint32_t i{0}; i < 1000000; i++) { float det1 = mat4.Det(); } } SECTION("Matrix of Minors") { - for (uint32_t i{0}; i < 100000; i++) { + for (uint32_t i{0}; i < 1000000; i++) { mat4.MatrixOfMinors(mat5); } } SECTION("Invert") { - for (uint32_t i{0}; i < 100000; i++) { + for (uint32_t i{0}; i < 1000000; i++) { mat5 = mat4.Invert(); } }; SECTION("Transpose") { - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat3 = mat1.Transpose(); } } SECTION("Normalize") { - for (uint32_t i{0}; i < 10000; i++) { + for (uint32_t i{0}; i < 100000; i++) { mat3 = mat1 / mat1.EuclideanNorm(); } } SECTION("GET ROW") { Matrix<1, 50> mat1Rows{}; - for (uint32_t i{0}; i < 1000000; i++) { + for (uint32_t i{0}; i < 100000000; i++) { mat1.GetRow(0, mat1Rows); } } SECTION("GET COLUMN") { Matrix<50, 1> mat1Columns{}; - for (uint32_t i{0}; i < 1000000; i++) { + for (uint32_t i{0}; i < 100000000; i++) { mat1.GetColumn(0, mat1Columns); } } + + SECTION("QR Decomposition") { + Matrix<50, 50> Q, R{}; + for (uint32_t i{0}; i < 500; i++) { + mat1.QRDecomposition(Q, R); + } + } } \ No newline at end of file diff --git a/unit-tests/timing-results/matrix-timing-tests.txt b/unit-tests/timing-results/matrix-timing-tests.txt index 1e728e8..f3d5699 100644 --- a/unit-tests/timing-results/matrix-timing-tests.txt +++ b/unit-tests/timing-results/matrix-timing-tests.txt @@ -1,56 +1,36 @@ -Randomness seeded to: 2444679151 -0.180 s: Addition -0.180 s: Timing Tests -0.177 s: Subtraction -0.177 s: Timing Tests -1.868 s: Multiplication -1.868 s: Timing Tests -0.127 s: Scalar Multiplication -0.127 s: Timing Tests -0.173 s: Element Multiply -0.173 s: Timing Tests -0.178 s: Element Divide -0.178 s: Timing Tests -0.172 s: Minor Matrix -0.172 s: Timing Tests -0.103 s: Determinant -0.103 s: Timing Tests -0.411 s: Matrix of Minors -0.411 s: Timing Tests -0.109 s: Invert -0.109 s: Timing Tests -0.122 s: Transpose -0.122 s: Timing Tests -0.190 s: Normalize -0.190 s: Timing Tests -0.006 s: GET ROW -0.006 s: Timing Tests -0.235 s: GET COLUMN -0.235 s: Timing Tests +Running matrix-timing-tests with timing +Randomness seeded to: 3567651885 +1.857 s: Addition +1.857 s: Timing Tests +1.788 s: Subtraction +1.788 s: Timing Tests +1.929 s: Multiplication +1.929 s: Timing Tests +1.268 s: Scalar Multiplication +1.268 s: Timing Tests +1.798 s: Element Multiply +1.798 s: Timing Tests +1.802 s: Element Divide +1.803 s: Timing Tests +1.553 s: Minor Matrix +1.554 s: Timing Tests +1.009 s: Determinant +1.009 s: Timing Tests +4.076 s: Matrix of Minors +4.076 s: Timing Tests +1.066 s: Invert +1.066 s: Timing Tests +1.246 s: Transpose +1.246 s: Timing Tests +2.284 s: Normalize +2.284 s: Timing Tests +0.606 s: GET ROW +0.606 s: Timing Tests +24.629 s: GET COLUMN +24.630 s: Timing Tests +3.064 s: QR Decomposition +3.064 s: Timing Tests =============================================================================== test cases: 1 | 1 passed assertions: - none - - Command being timed: "build/unit-tests/matrix-timing-tests -d yes" - User time (seconds): 4.05 - System time (seconds): 0.00 - Percent of CPU this job got: 100% - Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.05 - Average shared text size (kbytes): 0 - Average unshared data size (kbytes): 0 - Average stack size (kbytes): 0 - Average total size (kbytes): 0 - Maximum resident set size (kbytes): 3200 - Average resident set size (kbytes): 0 - Major (requiring I/O) page faults: 184 - Minor (reclaiming a frame) page faults: 171 - Voluntary context switches: 1 - Involuntary context switches: 26 - Swaps: 0 - File system inputs: 12 - File system outputs: 1 - Socket messages sent: 0 - Socket messages received: 0 - Signals delivered: 0 - Page size (bytes): 4096 - Exit status: 0