Is there any other function faster than sum(A,2) to get the sum of all rows?

1 ビュー (過去 30 日間)
Nadatimuj
Nadatimuj 2022 年 6 月 26 日
コメント済み: Walter Roberson 2022 年 6 月 27 日
a=zeros(6750);
h=zeros(6750,1);
tic;k=h-sum(a,2); toc
Elapsed time is 0.041132 seconds.
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 件のコメント
Walter Roberson
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
Walter Roberson 2022 年 6 月 26 日
Switching to columns can improve performance as it allows better use of hardware cache.
  2 件のコメント
Walter Roberson
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
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
Elapsed time is 0.003234 seconds.
  1 件のコメント
Nadatimuj
Nadatimuj 2022 年 6 月 26 日
Thanks, yes that's a good idea. However, originally I didn't use the sparse notation, I will check if using sparse will impact other parts of the code. Otherwise sparse conversion just here can take some time.

サインインしてコメントする。

タグ

製品


リリース

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by