MATLAB: Is element-wise multiplication or element-wise squaring faster

element wise multiplicationelement-wise square

I have a matrix A for which I need its individual elements squared. Which of the following is faster?
% This… >> B = A .* A;
% Or this? >> B = A .^ 2;
Anyone know which of these is faster? Some initial tests suggest the direct squaring is marginally faster… but I'd like to know why.
Thanks!

Best Answer

A slightly more robust timing test, using timeit:
n = 1:100:1000;
t = zeros(length(n),2);
for ii = 1:length(n)
a = rand(n(ii));
t(ii,1) = timeit(@() a.*a);
t(ii,2) = timeit(@() a.^2);
end
plot(n, t, 'marker', '.');
legend('*', '^');
Playing around with the values of n give me different results. For small matrices (n ~ 1-10), times is faster. For larger matrices (n ~ 100-4500), power is faster. After this point, the two converge to nearly identical run times.
Not sure on the why, since both function are built-ins. But running similar tests to the above should give you a good idea of how your computer will respond for the matrix sizes relevant to your problem.
Related Question