How important is the accurate specification of nnz for spalloc?

조회 수: 1 (최근 30일)
Ulrik William Nash
Ulrik William Nash 2017년 7월 22일
댓글: James Tursa 2017년 7월 22일
How important for performance is the accurate specification of nnz for spalloc? And is undershooting worse than overshooting?

채택된 답변

James Tursa
James Tursa 2017년 7월 22일
편집: James Tursa 2017년 7월 22일
In general, undershooting is much worse than overshooting. With undershooting, if you go over the allocated amount by even 1 element, the entire data blocks (value & indexing) must be copied over into newly allocated data blocks. But if you overshoot by 1 element, you simply have a few bytes of extra storage allocated and it will not impact performance at all. As to how bad the undershooting will hurt you, that will depend entirely on how large those data blocks are and how often you end up copying them to newly allocated memory blocks.
  댓글 수: 2
Ulrik William Nash
Ulrik William Nash 2017년 7월 22일
Thank you, James, for this answer. This will help me quite a bit, I think.
James Tursa
James Tursa 2017년 7월 22일
FYI, if you add in one element beyond current capacity, MATLAB does not allocate room for just one more element ... it is smarter than that. It will allocate more space using an internal formula based on the current size of the blocks. But still, it is best to limit how often this happens if you can.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Sparse Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by