Speed and Multiple Vectors
조회 수: 1 (최근 30일)
이전 댓글 표시
Is it faster to operate on multiple individual vectors or to put many vectors into a single matrix and simply reference the columns of the resulting matrix?
댓글 수: 0
채택된 답변
per isakson
2014년 2월 26일
편집: per isakson
2014년 2월 26일
This test probably has little meaning. (At least, Matlab is not smart enough to see that I take max of the same vector thousand times.) I guess, the difference is because the vector remains in a cache closer to the cpu. If speed is important, you might want to make a more realistic test.
N = 1000;
M = rand(1e5,N);
v = M(:,1);
tic
for jj = 1 : N
m = max(M(:,jj));
end
toc
tic
for jj = 1 : N
m = max(v);
end
toc
returns
Elapsed time is 0.465941 seconds.
Elapsed time is 0.036675 seconds.
.
One column only:
N = 1000;
M = rand(1e5,N);
v = M(:,1);
JJ = floor(N/2);
tic
for jj = 1 : N
m = max( M( :, JJ ) ); % <<<<<<<<<<<
end
toc
tic
for jj = 1 : N
m = max(v);
end
toc
returns
Elapsed time is 0.340061 seconds.
Elapsed time is 0.046989 seconds.
댓글 수: 0
추가 답변 (1개)
Star Strider
2014년 2월 26일
I suggest combining them into a single matrix and referencing the columns of the resulting matrix. It’s a lot easier to code and store those results. This works for vectors of equal lengths.
If you encounter the problem of the vectors having different lengths, it°s easy to use a cell array to store them and have them behave essentially as a matrix (except for not being able to use that matrix in matrix computations). It is easy to convert them back to numerical vectors for computation when you need to.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Performance and Memory에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!