Unnecessary copying in Matlab Coder generated C code

조회 수: 6 (최근 30일)
Jane Jean
Jane Jean 2013년 8월 1일
Hi! I generated C code with Matlab Coder can I realize that there are a lot of such unnecessary copying. What can I do to avoid that?
for (i0 = 0; i0 < 153; i0++) {
dv42[i0] = dv74[i0];
dv43[i0] = dv75[i0];
}
...
for (i0 = 0; i0 < 153; i0++) {
dv74[i0] = dv42[i0];
dv75[i0] = dv43[i0];
}
...
for (i0 = 0; i0 < 153; i0++) {
dv42[i0] = dv74[i0];
dv43[i0] = dv75[i0];
}
  댓글 수: 1
Ryan Livingston
Ryan Livingston 2013년 8월 1일
편집: Ryan Livingston 2013년 8월 1일
If you post a small example of MATLAB code which produces this, we may be able to give some suggestions.

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

답변 (1개)

Jane Jean
Jane Jean 2013년 8월 1일
I have a structure in Matlab similar to what is below and right before the subfunction is called, the generated C code is doing the unnecessary copying instead of taking 'a' directly as an input of the subfunction.
function output = main_function(a)
...
a = [1;2;3];
...
output_sub = subfunction(a)
  댓글 수: 2
Walter Roberson
Walter Roberson 2013년 8월 1일
The copying would be appropriate if the subfunction modifies its input, which we cannot determine from what you show.
Why are you passing "a" into main_function and also assigning a value to it?
Jane Jean
Jane Jean 2013년 8월 1일
'a' is first used somewhere before it is reassigned with another value. But right before it is fed into 'subfunction', 'a' is copied to another temporary variable, e.g. 'dv74' then the latter is copied to 'dv42' and 'dv42' is copied back to 'dv74' and 'dv74' is again copied to 'dv42' and finally subfunction takes 'dv42' as input. What can I do to avoid this unnecessary copying?

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

카테고리

Help CenterFile Exchange에서 MATLAB Coder에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by