From b067fb3b42d36e60c5de5fe62a9e87c3a99a2500 Mon Sep 17 00:00:00 2001
From: giuliaghirardini <giuliaghirardini2001@gmail.com>
Date: Sat, 9 Mar 2024 15:24:50 +0100
Subject: [PATCH] [benchmark][speed] Added eigen problem, sum, cross product.
 (WIP: optimize function division and total exe speed)

---
 tests/speedBenchmark.m     | 36 +++++++++++++++++++++++++++++
 tests/speedBenchmarkPlot.m | 47 +++++++++++++++++++++++++++++++++++++-
 2 files changed, 82 insertions(+), 1 deletion(-)

diff --git a/tests/speedBenchmark.m b/tests/speedBenchmark.m
index 395c8bb..27d7a13 100644
--- a/tests/speedBenchmark.m
+++ b/tests/speedBenchmark.m
@@ -69,4 +69,40 @@ function speed = speedBenchmark(len)
     tic
     scalarProductClass = dot(testClass.a,testClass.b);
     speed.scalarProduct.class = toc;
+
+    %=======SUM=======    
+    tic
+    sumStruct = testStruct.a + testStruct.b;
+    speed.sum.struct = toc;
+
+    tic
+    sumClass = testClass.a + testClass.b;
+    speed.sum.class = toc;
+
+    %=======CROSS PRODUCT======== (MATRICES)
+    matrix1 = randi([0, 1000], [3,len]);
+    matrix2 = randi([0, 1000], [3,len]);
+
+    testClass.a = matrix1; testStruct.a = matrix1;
+    testClass.b = matrix2; testStruct.b = matrix2;
+    
+    tic
+    crossProductStruct = cross(testStruct.a,testStruct.b);
+    speed.crossProduct.struct = toc;
+
+    tic
+    crossProductClass = cross(testClass.a,testClass.b);
+    speed.crossProduct.class = toc;
+    
+    %========EIGENVALUES PROBLEM======== (MATRICES)
+    matrix1 = randi([0, 1000], [len,len]);
+    testClass.a = matrix1; testStruct.a = matrix1;
+
+    tic
+    eigStruct = eig(testStruct.a);
+    speed.eigen.struct = toc;
+
+    tic
+    eigClass = eig(testClass.a);
+    speed.eigen.class = toc;
 end
diff --git a/tests/speedBenchmarkPlot.m b/tests/speedBenchmarkPlot.m
index 6abf509..7cadfd5 100644
--- a/tests/speedBenchmarkPlot.m
+++ b/tests/speedBenchmarkPlot.m
@@ -25,7 +25,7 @@ for i = 1:length(vct)
 end
 plt.lgdStruct = plot(nan, nan, 'color', plt.stdBlue);
 plt.lgdClass = plot(nan, nan, 'color', plt.stdRed);
-title('readTime');
+title('Reading time');
 xlabel('Number of elements')
 ylabel('Speed [s]')
 legend([plt.lgdStruct, plt.lgdClass], {'Struct', 'Class'})
@@ -74,4 +74,49 @@ title('Scalar product time');
 xlabel('Number of elements')
 ylabel('Speed [s]')
 legend([plt.lgdStruct, plt.lgdClass], {'Struct', 'Class'})
+grid on
+
+% Sum 
+figure
+for i = 1:length(vct)
+    semilogx(vct(i), speed(i).sum.struct, '.' ,'Color', plt.stdBlue)
+    semilogx(vct(i), speed(i).sum.class, '.', 'Color', plt.stdRed)
+    hold on
+end
+plt.lgdStruct = plot(nan, nan, 'color', plt.stdBlue);
+plt.lgdClass = plot(nan, nan, 'color', plt.stdRed);
+title('Sum time');
+xlabel('Number of elements')
+ylabel('Speed [s]')
+legend([plt.lgdStruct, plt.lgdClass], {'Struct', 'Class'})
+grid on
+
+% Cross product time (matrices) 
+figure
+for i = 1:length(vct)
+    semilogx(vct(i), speed(i).crossProduct.struct, '.' ,'Color', plt.stdBlue)
+    semilogx(vct(i), speed(i).crossProduct.class, '.', 'Color', plt.stdRed)
+    hold on
+end
+plt.lgdStruct = plot(nan, nan, 'color', plt.stdBlue);
+plt.lgdClass = plot(nan, nan, 'color', plt.stdRed);
+title('Cross product time (matrices)');
+xlabel('Number of elements')
+ylabel('Speed [s]')
+legend([plt.lgdStruct, plt.lgdClass], {'Struct', 'Class'})
+grid on
+
+% Eigenvalues problem time (matrices) 
+figure
+for i = 1:length(vct)
+    semilogx(vct(i), speed(i).eigen.struct, '.' ,'Color', plt.stdBlue)
+    semilogx(vct(i), speed(i).eigen.class, '.', 'Color', plt.stdRed)
+    hold on
+end
+plt.lgdStruct = plot(nan, nan, 'color', plt.stdBlue);
+plt.lgdClass = plot(nan, nan, 'color', plt.stdRed);
+title('Eigenvalues problem time (matrices) ');
+xlabel('Number of elements')
+ylabel('Speed [s]')
+legend([plt.lgdStruct, plt.lgdClass], {'Struct', 'Class'})
 grid on
\ No newline at end of file
-- 
GitLab