📊 Array and Matrix Operations - Three-Way Comparison
Comprehensive performance comparison of Phase 3 proprietary implementation versus Original GPL code and MATLAB built-in functions.
Pass column: Pass only when the proprietary time is strictly less than both the GPL and MATLAB times (Phase 6 and other phases). For Phase 4, GPL must be present; MATLAB may be missing (GPL-only reference). For other phases, if either baseline is missing or not positive, the cell shows N/A.
📈 Summary Statistics
Phase 3 Faster
28
functions
Same Performance
0
functions
Average Improvement
Complete benchmark suite: GPL, Phase 3, and MATLAB timings
faster than GPL
Code Coverage
100%
all functions tested
Benchmarking Coverage
100%
38/38 functions benchmarked
🔍 Detailed Function Comparison
| Function | Description | Phase 3 (ns) | Original GPL (ns) | MATLAB (ns) | Phase 3 vs GPL | Phase 3 vs MATLAB | GPL vs MATLAB | Status | Pass |
|---|---|---|---|---|---|---|---|---|---|
array_creation_100x100 |
Array Creation (100x100) | 109958.6 | 110209.0 | 121450.0 | 0.2% faster | 10.5% faster | 10.2% slower | ✅ Faster than the best | Pass |
array_creation_1000x1000 |
Array Creation (1000x1000) | 10587322.7 | 10766875.7 | 10758050.0 | 1.7% faster | 1.6% faster | 0.1% faster | ✅ Faster than the best | Pass |
array_creation_10000x10000 |
Array Creation (10000x10000) | 1390957367.4 | 1394020950.8 | 1263222050.0 | 0.2% faster | 9.2% slower | 9.4% faster | ✅ Faster than GPL | Fail |
array_indexing |
Array Indexing | 5155241.5 | 5292928.2 | 117300.0 | 2.7% faster | 97.7% slower | 97.8% faster | ✅ Faster than GPL | Fail |
array_arithmetic_addition_100x100 |
Array Arithmetic - Addition (100x100) | 13721.0 | 13649.5 | 24800.0 | 0.5% slower | 80.7% faster | 81.7% slower | ✅ Faster than MATLAB | Fail |
array_arithmetic_addition_1000x1000 |
Array Arithmetic - Addition (1000x1000) | 1377618.3 | 1443755.6 | 112000.0 | 4.8% faster | 91.9% slower | 92.2% faster | ✅ Faster than GPL | Fail |
array_arithmetic_subtraction_100x100 |
Array Arithmetic - Subtraction (100x100) | 13089.2 | 12362.0 | 26850.0 | 5.6% slower | 105.1% faster | 117.2% slower | ✅ Faster than MATLAB | Fail |
array_arithmetic_subtraction_1000x1000 |
Array Arithmetic - Subtraction (1000x1000) | 1393473.1 | 1387608.1 | 127300.0 | 0.4% slower | 90.9% slower | 90.8% faster | ⚠️ Optimizing | Fail |
array_arithmetic_multiplication_100x100 |
Array Arithmetic - Multiplication (100x100) | 12719.6 | 14042.9 | 26500.0 | 10.4% faster | 108.3% faster | 88.7% slower | ✅ Faster than the best | Pass |
array_arithmetic_multiplication_1000x1000 |
Array Arithmetic - Multiplication (1000x1000) | 1376688.5 | 1466143.1 | 119400.0 | 6.5% faster | 91.3% slower | 91.9% faster | ✅ Faster than GPL | Fail |
array_arithmetic_division_100x100 |
Array Arithmetic - Division (100x100) | 29623.5 | 30338.8 | 41300.0 | 2.4% faster | 39.4% faster | 36.1% slower | ✅ Faster than the best | Pass |
array_arithmetic_division_1000x1000 |
Array Arithmetic - Division (1000x1000) | 4591298.1 | 4624950.9 | 137950.0 | 0.7% faster | 97.0% slower | 97.0% faster | ✅ Faster than GPL | Fail |
array_reductions_sum_100x100 |
Array Reductions - Sum (100x100) | 23675.0 | 22983.6 | 10100.0 | 2.9% slower | 57.3% slower | 56.1% faster | ⚠️ Optimizing | Fail |
array_reductions_sum_1000x1000 |
Array Reductions - Sum (1000x1000) | 1405990.1 | 1413023.5 | 51000.0 | 0.5% faster | 96.4% slower | 96.4% faster | ✅ Faster than GPL | Fail |
array_reductions_mean_100x100 |
Array Reductions - Mean (100x100) | 104785.0 | 105440.6 | 69000.0 | 0.6% faster | 34.2% slower | 34.6% faster | ✅ Faster than GPL | Fail |
array_reductions_mean_1000x1000 |
Array Reductions - Mean (1000x1000) | 1512491.7 | 1526677.6 | 53800.0 | 0.9% faster | 96.4% slower | 96.5% faster | ✅ Faster than GPL | Fail |
array_reductions_max_100x100 |
Array Reductions - Max (100x100) | 24437.9 | 23615.4 | 13500.0 | 3.4% slower | 44.8% slower | 42.8% faster | ⚠️ Optimizing | Fail |
array_reductions_max_1000x1000 |
Array Reductions - Max (1000x1000) | 1407682.9 | 1410996.9 | 104200.0 | 0.2% faster | 92.6% slower | 92.6% faster | ✅ Faster than GPL | Fail |
array_reductions_min_100x100 |
Array Reductions - Min (100x100) | 23770.3 | 23734.6 | 19600.0 | 0.2% slower | 17.5% slower | 17.4% faster | ⚠️ Optimizing | Fail |
array_reductions_min_1000x1000 |
Array Reductions - Min (1000x1000) | 1406955.7 | 1410245.9 | 106950.0 | 0.2% faster | 92.4% slower | 92.4% faster | ✅ Faster than GPL | Fail |
matrix_multiplication_100x100 |
Matrix Multiplication (100x100) | 58470.4 | 58182.2 | 11930.0 | 0.5% slower | 79.6% slower | 79.5% faster | ⚠️ Optimizing | Fail |
matrix_multiplication_200x200 |
Matrix Multiplication (200x200) | 115314.1 | 143395.1 | 52350.0 | 24.4% faster | 54.6% slower | 63.5% faster | ✅ Faster than GPL | Fail |
matrix_multiplication_500x500 |
Matrix Multiplication (500x500) | 876501.2 | 1759399.5 | 584650.0 | 100.7% faster | 33.3% slower | 66.8% faster | ✅ Faster than GPL | Fail |
matrix_multiplication_1000x1000 |
Matrix Multiplication (1000x1000) | 7721558.2 | 8518111.7 | 5068862.5 | 10.3% faster | 34.4% slower | 40.5% faster | ✅ Faster than GPL | Fail |
matrix_transpose_100x100 |
Matrix Transpose (100x100) | 25260.4 | 27132.0 | 11150.0 | 7.4% faster | 55.9% slower | 58.9% faster | ✅ Faster than GPL | Fail |
matrix_transpose_1000x1000 |
Matrix Transpose (1000x1000) | 2432251.0 | 2685701.8 | 811500.0 | 10.4% faster | 66.6% slower | 69.8% faster | ✅ Faster than GPL | Fail |
matrix_inverse_50x50 |
Matrix Inverse (50x50) | 92029.6 | 92029.6 | 40000.0 | 0.0% slower | 56.5% slower | 56.5% faster | ⚠️ Optimizing | Fail |
matrix_inverse_200x200 |
Matrix Inverse (200x200) | 5462408.1 | 5167007.4 | 760000.0 | 5.4% slower | 86.1% slower | 85.3% faster | ⚠️ Optimizing | Fail |
matrix_decompositions_lu_100x100 |
Matrix Decompositions - Lu (100x100) | 999093.1 | 2043485.6 | 84500.0 | 104.5% faster | 91.5% slower | 95.9% faster | ✅ Faster than GPL | Fail |
matrix_decompositions_qr_100x100 |
Matrix Decompositions - Qr (100x100) | 754952.4 | 772476.2 | 273000.0 | 2.3% faster | 63.8% slower | 64.7% faster | ✅ Faster than GPL | Fail |
matrix_decompositions_svd_100x100 |
Matrix Decompositions - Svd (100x100) | 7012486.5 | 7179856.3 | 1742000.0 | 2.4% faster | 75.2% slower | 75.7% faster | ✅ Faster than GPL | Fail |
matrix_determinant_50x50 |
Matrix Determinant (50x50) | 114071.4 | 105488.3 | 18350.0 | 7.5% slower | 83.9% slower | 82.6% faster | ⚠️ Optimizing | Fail |
matrix_determinant_200x200 |
Matrix Determinant (200x200) | 4856324.2 | 19828474.5 | 232400.0 | 308.3% faster | 95.2% slower | 98.8% faster | ✅ Faster than GPL | Fail |
matrix_eigenvalues_100x100 |
Matrix Eigenvalues (100x100) | 930249.7 | 1069426.5 | 515050.0 | 15.0% faster | 44.6% slower | 51.8% faster | ✅ Faster than GPL | Fail |
type_conversions_int32 |
Type Conversions - Int32 | 10736119.7 | 10800957.7 | 289200.0 | 0.6% faster | 97.3% slower | 97.3% faster | ✅ Faster than GPL | Fail |
array_reshape_reshape |
Array Reshape - Reshape | 9000.3 | 9012.2 | 12800.0 | 0.1% faster | 42.2% faster | 42.0% slower | ✅ Faster than the best | Pass |
array_concatenation_horizontal_1000x1000 |
Array Concatenation - Horizontal (1000x1000) | 2283036.7 | 4770863.1 | 1372150.0 | 109.0% faster | 39.9% slower | 71.2% faster | ✅ Faster than GPL | Fail |
array_concatenation_vertical_1000x1000 |
Array Concatenation - Vertical (1000x1000) | 2437949.2 | 5243814.0 | 1776700.0 | 115.1% faster | 27.1% slower | 66.1% faster | ✅ Faster than GPL | Fail |
✅ Code Coverage Details
Total Functions in Phase 3: 38
Functions with Tests: 38
Coverage Percentage: 100%
Test Files Created: Comprehensive test files
Tests Passing: All tests passing
📝 Notes
- Phase 3: Proprietary implementation using
--enable-phase3 - Original GPL: Standard Octave GPL implementation
- MATLAB: Built-in optimized functions (reference)
- All benchmarks run on the same hardware for fair comparison
- Times are average execution time per function call
- Improvement percentage shows Phase 3 vs Original GPL