creating a temporary variable

16 ビュー (過去 30 日間)
Ingo
Ingo 2012 年 1 月 3 日
This is a quick question. Compare
A = sparse(...); B = A - C;
and
B = sparse(...) - C;
Memory-wise spoken, is there a difference? Will the second one use less memory because I'm not creating a variable?

採用された回答

Walter Roberson
Walter Roberson 2012 年 1 月 3 日
There will be very little memory difference. For a transient value, MATLAB creates everything about the storage except the symbol table entry with the name and a pointer to the descriptor.
  3 件のコメント
Walter Roberson
Walter Roberson 2012 年 1 月 3 日
As far as I know, MATLAB only uses memory "in-place" when the same variable appears in a function call and in the assignment of the results from that call. There was another condition as well but I have forgotten it now.
I'm thinking it might have been Rick Rossom who listed the conditions in a comment, but it might have been someone else at MathWorks.
Ingo
Ingo 2012 年 1 月 3 日
Alright then.
Additionally, I tested this whole thing (only "quick'n'dirty", though) and I couldn't notice any memory difference.
Thanks!

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

その他の回答 (1 件)

Nicholas
Nicholas 2012 年 1 月 3 日
Did you try using tic toc?
tic
A = sparse(magic(3));
B = A - C;
disp(toc)
tic
B = sparse(magic(3)) - C;
disp(toc)
In any case the result depends on matrix dimensions and matrix initialization. If you want to improve memory management you should initialize a matrix/vector first and than try to improve matrix calculation.
  3 件のコメント
Nicholas
Nicholas 2012 年 1 月 3 日
If you are interested so deeply in memory allocation you should write your code in C and do not use matlab.
You can not see under the hood in matlab..
Ingo
Ingo 2012 年 1 月 3 日
Yeah, I know that writing it in C would be more efficient. The advantage of Matlab, however, is the simple fact, that I don't have to implement all the mathematical stuff.
My code is pretty fast, I believe. If there was any way to make it faster in Matlab, I'd do it. So I'm looking for ways. But if not, that's okay, too – creating, processing and plotting 100.000 data points on my several years old laptop within seconds or minutes sounds more than acceptable to me. ;)

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

カテゴリ

Help Center および File ExchangeSparse Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by