diff --git a/tests/Test.m b/tests/Test.m index b9164bdd5036ba54200756137808d3283370fa40..b39e3f6c0ad0513085ea43ea9f3f567acd82ba98 100644 --- a/tests/Test.m +++ b/tests/Test.m @@ -8,6 +8,7 @@ classdef Test < Config c double rows double % Number of rows for random matrix cols double % Number of columns for random matrix + e double end properties(SetAccess = protected) @@ -15,7 +16,6 @@ classdef Test < Config end properties(Dependent) - e randomMatrix randomVect end diff --git a/tests/dataSpeed.mat b/tests/dataSpeed.mat index 6a95c212cf1e97357fb619f3bd9f81ccc7f0395f..0eb49fdf8370cdc0cb80f875c7c1c6192ca31387 100644 --- a/tests/dataSpeed.mat +++ b/tests/dataSpeed.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a86db703588872061544d2a222cb2e02984b0341a11a5637b7371d0592a471f9 -size 26742 +oid sha256:66a0de3e874d8c280bdea780291cd24128be24983af59683ff246bf2c98ba946 +size 29105 diff --git a/tests/operations/readSpeed.m b/tests/operations/readSpeed.m index 71d00cca2670623bc26bd35cb2381159616b3f90..77e54256d1f2cc4aaca5d44318708aa471b93fa0 100644 --- a/tests/operations/readSpeed.m +++ b/tests/operations/readSpeed.m @@ -1,6 +1,6 @@ function readTime = readSpeed(len) testClass = Test(1, 2, 3, 4, len, len); - testStruct = struct; + testStruct = struct(testClass); testStruct.a = 1; testStruct.b = 2; diff --git a/tests/operations/readWriteSpeed.m b/tests/operations/readWriteSpeed.m new file mode 100644 index 0000000000000000000000000000000000000000..f7773de3c4b164e69c8651d1939b2d251e067e69 --- /dev/null +++ b/tests/operations/readWriteSpeed.m @@ -0,0 +1,36 @@ +function readWriteTime = readWriteSpeed(times, dim) +% read and write function for assigned matrix + testClass = Test(1, 2, 3, 4, dim, dim); + testStruct = struct(testClass); + + testStruct.a = 1; + testStruct.b = 2; + testStruct.c = 3; + + arr1 = zeros(1, dim); + arr2 = zeros(1, dim); + + fields = fieldnames(testClass); + + tic + for k = 1:length(times) + for j = 1:times(k) + for i = 1:dim + arr1(i) = testStruct.(fields{mod(i,3) + 1}); + testStruct.e = arr1(i); + end + end + end + readWriteTime.struct = toc; + + tic + for k = 1:length(times) + for j = 1:times(k) + for i = 1:dim + arr2(i) = testClass.(fields{mod(i,3) + 1}); + testClass.e = arr2(i); + end + end + end + readWriteTime.class = toc; +end \ No newline at end of file diff --git a/tests/speedBenchmarkConfig.m b/tests/speedBenchmarkConfig.m index 7955716d3da79f91e89265f97f425c7f743f0307..dced1b2a34df7e7bee34abb844c0b6835da2db35 100644 --- a/tests/speedBenchmarkConfig.m +++ b/tests/speedBenchmarkConfig.m @@ -16,6 +16,18 @@ for i = 1:length(vct) end clear temp +%% Reading and write few times time +rw.readWriteTime = []; +rw.readWriteRatio = []; +dim = 5; + +for i = 1:length(vct) + temp = readWriteSpeed(vct(i), dim); + rw.readWriteTime = [rw.readWriteTime temp]; %#ok<*AGROW> + rw.readWriteRatio = [rw.readWriteRatio temp.class/temp.struct]; +end +clear temp + %% Assignment time assignment.assignmentTime = []; assignment.assignmentRatio.elementWise = []; diff --git a/tests/speedBenchmarkPlot.m b/tests/speedBenchmarkPlot.m index f953975e8627f1e26fcb204d22ef115304869365..4cff71212e49e44b5769e203d5e394c74148341d 100644 --- a/tests/speedBenchmarkPlot.m +++ b/tests/speedBenchmarkPlot.m @@ -7,6 +7,9 @@ load('dataSpeed.mat') % Reading time [~, ~] = speedPlots(read.readTime, read.readRatio, vct, 'Reading'); +%% Read/write time +[~, ~] = speedPlots(rw.readWriteTime, rw.readWriteRatio, vct, 'Read/write'); + %% Assignment time standard [~, ~] = speedPlots(assignment.assignmentTime, assignment.assignmentRatio, vct, 'Assignment standard'); diff --git a/tests/speedPlots.m b/tests/speedPlots.m index 3e37e361c3ad1fe2353988ae7b16b3d78fc59060..bd67118aee9a337cf91eabe572a009af4da51f35 100644 --- a/tests/speedPlots.m +++ b/tests/speedPlots.m @@ -1,9 +1,12 @@ function [pltConfig, plt] = speedPlots(obj1, obj2, vct, name) pltConfig.stdBlue = [0 0.447 0.741]; pltConfig.stdRed = [0.8500 0.3250 0.0980]; + speedPlotsFig = figure; + tabgp = uitabgroup(speedPlotsFig); if strcmp(name,'Assignment element wise') - figure + tab = uitab(tabgp,'Title','Time'); + axes('parent', tab) for i = 1:length(vct) semilogx(vct(i), obj1(i).elementWise.struct, '.' ,'Color', pltConfig.stdBlue) semilogx(vct(i), obj1(i).elementWise.class, '.', 'Color', pltConfig.stdRed) @@ -17,7 +20,8 @@ function [pltConfig, plt] = speedPlots(obj1, obj2, vct, name) legend([pltConfig.lgdStruct, pltConfig.lgdClass], {'Struct', 'Class'}) grid on - figure + tab = uitab(tabgp,'Title','Ratio'); + axes('parent', tab) x = 10:0.1:1000; plt.readPlot = semilogx(vct, obj2.elementWise); hold on @@ -29,7 +33,8 @@ function [pltConfig, plt] = speedPlots(obj1, obj2, vct, name) grid on else if strcmp(name,'Assignment standard') - figure + tab = uitab(tabgp,'Title','Time'); + axes('parent', tab) for i = 1:length(vct) semilogx(vct(i), obj1(i).std.struct, '.' ,'Color', pltConfig.stdBlue) semilogx(vct(i), obj1(i).std.class, '.', 'Color', pltConfig.stdRed) @@ -43,7 +48,8 @@ function [pltConfig, plt] = speedPlots(obj1, obj2, vct, name) legend([pltConfig.lgdStruct, pltConfig.lgdClass], {'Struct', 'Class'}) grid on - figure + tab = uitab(tabgp,'Title','Ratio'); + axes('parent', tab) x = 10:0.1:1000; plt.readPlot = semilogx(vct, obj2.std); hold on @@ -54,7 +60,8 @@ function [pltConfig, plt] = speedPlots(obj1, obj2, vct, name) legend([plt.readPlot, plt.regrPlot], {'Ratio','Regression'}) grid on else - figure + tab = uitab(tabgp,'Title','Time'); + axes('parent', tab) for i = 1:length(vct) semilogx(vct(i), obj1(i).struct, '.' ,'Color', pltConfig.stdBlue) semilogx(vct(i), obj1(i).class, '.', 'Color', pltConfig.stdRed) @@ -68,7 +75,8 @@ function [pltConfig, plt] = speedPlots(obj1, obj2, vct, name) legend([pltConfig.lgdStruct, pltConfig.lgdClass], {'Struct', 'Class'}) grid on - figure + tab = uitab(tabgp,'Title','Ratio'); + axes('parent', tab) x = 10:0.1:1000; plt.readPlot = semilogx(vct, obj2); hold on @@ -78,6 +86,7 @@ function [pltConfig, plt] = speedPlots(obj1, obj2, vct, name) ylabel('Ratio') legend([plt.readPlot, plt.regrPlot], {'Ratio','Regression'}) grid on + end end end \ No newline at end of file