Borrar filtros
Borrar filtros

How to measure time of matrix multiplication in matab?

20 visualizaciones (últimos 30 días)
Azmar Ismael
Azmar Ismael el 9 de Jul. de 2024 a las 17:59
Comentada: Stephen23 el 10 de Jul. de 2024 a las 11:36
I am using R2023b in case that is important.
For the sake of a project, I am trying to measure the average time of matlab when it multiplies a 96 x 192 matrix with a 192 x 1 matrix.
I have used the following code:
repeats = 100;
tTot = 0;
m = 96;
n = 192;
for j = 0:repeats
A = rand([m,n]);
A(:,1) = 1;
b = rand([n,1]);
tic
c = A * b;
tTot = tTot + toc;
end
tAvg = tTot/repeats
I have run this script a few times on my computer with different values for "repeats":
  • If I set repeats to 1, I get the time it takes to complete a matrix multiplication is ~1.25e-04
  • If I set repeats to 10, I get the time it takes to complete a matrix multiplication is ~8.75e-05
  • If I set repeats to 100, I get the time it takes to complete a matrix multiplication is ~5e-06
It seems quite strange to me that the average changed so much if I increase the value for repeats, so my questions are: Am I doing something wrong when I am measuring the average time? If yes, what am I doing wrong?
  2 comentarios
Aquatris
Aquatris el 10 de Jul. de 2024 a las 9:08
Editada: Aquatris el 10 de Jul. de 2024 a las 9:09
Adding to the @Steven Lord answer, keep in mind execution time of the exact same thing can be different depending on the available resources of your PC at the time you run the code
Stephen23
Stephen23 el 10 de Jul. de 2024 a las 11:36
"It seems quite strange to me that the average changed so much if I increase the value for repeats"
The MATLAB JIT engine would be perfectly capable of deciding to apply different code optimisations depending on the number of iterations that are performed:
Whether it does is another question.

Iniciar sesión para comentar.

Respuestas (1)

Steven Lord
Steven Lord el 9 de Jul. de 2024 a las 18:06
As stated on this documentation page, "Sometimes programs run too fast for tic and toc to provide useful data. If your code is faster than 1/10 second, consider measuring it running in a loop, and then average to find the time for a single run."
Generate the matrices once then wrap the for loop in a tic and toc pair. Inside the loop all you'd do is perform the matrix multiplication.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by