- 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?
14 ビュー (過去 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!