I have a background in MATLAB, so I have a tendency to vectorize everything. However, in July, I tested these two functions:
function testVec(n)
t = [0 0 0 0];
for i = 1:n
for j = 1:4
t[j] = i;
end
end
end
function testVec2(n)
t = [0 0 0 0];
for i = 1:n
t.= [i i i i];
end
end
@time testVec(10^4)
0.000029 seconds (6 allocations: 288 bytes)
@time testVec2(10^4)
0.000844 seconds (47.96 k allocations: 1.648 MiB)
I have two questions:
- Why are cycles faster?
- If loops are really faster, are there smart smart vectorization methods that mimic loops? The syntax for loops is ugly and long.
source
share