- What's your definition of large? How many rows and columns?
- How long is it taking for those large matrices? How many seconds or minutes?
- How much speed do you require? What is the max allowable time?
- Do you have the Parallel Processing Toolbox?
Is there any other function faster than sum(A,2) to get the sum of all rows?
18 次查看(过去 30 天)
显示 更早的评论
a=zeros(6750);
h=zeros(6750,1);
tic;k=h-sum(a,2); toc
Is there any faster way than to use sum(A,2) to get the sums of the rows of a matrix? sum(A,2) seems to be slow for large matrices.
4 个评论
Image Analyst
2022-6-27
The Parallel Processing Toolbox is an add-on toolbox. You can ask for a free trial of it and see if the Parallel Processing Toolbox helps. I know some functions recognize if you have that toolbox and start parallel processes going on multiple CPU cores on your computer automatically.
Walter Roberson
2022-6-27
For sufficiently large matrices, addition is automatically handled by high performance parallel libraries. Using parfor or parfeval() will not improve performance compared to the automatic multi-core work that is done.
回答(2 个)
Walter Roberson
2022-6-26
Switching to columns can improve performance as it allows better use of hardware cache.
2 个评论
Walter Roberson
2022-6-27
When I test on my system, the sum(a,1) version is 5 to 6 times faster than the sum(a,2) version
MJFcoNaN
2022-6-26
In general, the native functions are optimized sufficiently.
In certain cases, there may be some better way but in other parts of code. For example,
a=sparse(zeros(6750));
h=sparse(zeros(6750,1));
tic;k=h-sum(a,2); toc
另请参阅
类别
在 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!