주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

memset을 사용하여 부동소수점 및 double형을 0.0으로 초기화

부동소수점 데이터를 명시적으로 0.0으로 초기화하는 코드 생성을 제어합니다.

모델 구성 창: 코드 생성 / 최적화

설명

memset를 사용하여 부동소수점 및 double형을 0.0으로 초기화 파라미터는 부동소수점 데이터를 0.0으로 명시적으로 초기화하는 코드를 생성할지 여부를 지정합니다.

설정

On (GUI), 'off' (명령줄) (디폴트 값) | off (GUI), 'on' (명령줄)
On

memset를 사용하여, 데이터형의 종류에 관계없이 부동소수점 데이터의 내부 저장소를 정수 비트 패턴 0(모든 비트가 0)으로 초기화합니다. 컴파일러와 타깃 CPU 모두 부동소수점 0을 0 정수 비트 패턴으로 표현하는 경우, 이 파라미터를 사용하여 실행 및 ROM 효율성을 높일 수 있습니다.

이 파라미터를 사용하려면 memset 기능을 활성화하기 위해 Memcpy 임계값 구성 파라미터를 켜야 합니다. 임계값이 충분히 높게 설정되어 있는지 확인하십시오.

Off

floatdouble 데이터형의 데이터에 대한 저장 공간을 0.0으로 명시적으로 초기화하는 코드를 생성합니다. 이렇게 생성된 코드는 해당 옵션을 선택했을 때 생성되는 코드보다 효율성이 약간 떨어집니다.

참고

명령줄 값은 설정 값과 반대입니다. 따라서 명령줄의 'on'는 설정 섹션의 “Off” 설명에 해당하며, 명령줄의 'off'는 설정 섹션의 “On” 설명에 해당합니다.

예제

모두 확장

이 예제는 memset 함수를 사용하여 내부 저장소를 지움으로써 생성된 코드를 최적화하는 방법을 보여줍니다.

예제 모델

MemsetOptimization 모델을 살펴보겠습니다.

model = 'MemsetOptimization';
open_system(model);

코드 생성

코드 생성기는 루프를 사용하여 Constant 블록의 값을 초기화합니다. 모델을 빌드합니다.

slbuild(model)
### Searching for referenced models in model 'MemsetOptimization'.
### Total of 1 models to build.
### Starting build procedure for: MemsetOptimization
### Successful completion of build procedure for: MemsetOptimization

Build Summary

Top model targets:

Model               Build Reason                                         Status                        Build Duration
=====================================================================================================================
MemsetOptimization  Information cache folder or artifacts were missing.  Code generated and compiled.  0h 0m 7.1112s

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 7.5125s

최적화가 적용되지 않은 생성된 코드를 확인합니다. 이 코드 라인들은 MemsetOptimization.c에 있습니다.

cfile = fullfile('MemsetOptimization_grt_rtw','MemsetOptimization.c');
coder.example.extractLines(cfile,'/* Model initialize function */',...
    '/* Model terminate function */',1,0);
/* Model initialize function */
void MemsetOptimization_initialize(void)
{
  /* Registration code */

  /* initialize error status */
  rtmSetErrorStatus(MemsetOptimization_M, (NULL));

  /* external outputs */
  {
    int32_T i;
    for (i = 0; i < 50; i++) {
      MemsetOptimization_Y.Out1[i] = 0.0;
    }
  }

  {
    int32_T i;

    /* ConstCode for Outport: '<Root>/Out1' */
    for (i = 0; i < 50; i++) {
      MemsetOptimization_Y.Out1[i] = 56.0;
    }

    /* End of ConstCode for Outport: '<Root>/Out1' */
  }
}

최적화 활성화

  1. 구성 파라미터 대화 상자를 엽니다.

  2. 구성 파라미터 대화 상자에서 memset를 사용하여 부동소수점 및 double형을 0.0으로 초기화 파라미터를 선택합니다. 또는 명령줄 API를 사용하여 최적화를 활성화할 수도 있습니다:

set_param(model,'InitFltsAndDblsToZero','off');

최적화를 적용하여 코드 생성

코드 생성기는 memset 함수를 사용하여 Constant 블록의 값을 초기화합니다.

모델을 빌드합니다.

slbuild(model)
### Searching for referenced models in model 'MemsetOptimization'.
### Total of 1 models to build.
### Starting build procedure for: MemsetOptimization
### Successful completion of build procedure for: MemsetOptimization

Build Summary

Top model targets:

Model               Build Reason                     Status                        Build Duration
=================================================================================================
MemsetOptimization  Generated code was out of date.  Code generated and compiled.  0h 0m 4.2388s

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 4.6906s

최적화가 적용된 생성된 코드를 확인합니다. 이 코드 라인들은 MemsetOptimization.c에 있습니다.

coder.example.extractLines(cfile,'/* Model initialize function */',...
    '/* Model terminate function */',1,0);
/* Model initialize function */
void MemsetOptimization_initialize(void)
{
  /* Registration code */

  /* initialize error status */
  rtmSetErrorStatus(MemsetOptimization_M, (NULL));

  /* external outputs */
  (void)memset(&MemsetOptimization_Y, 0, sizeof(ExtY_MemsetOptimization_T));

  {
    int32_T i;

    /* ConstCode for Outport: '<Root>/Out1' */
    for (i = 0; i < 50; i++) {
      MemsetOptimization_Y.Out1[i] = 56.0;
    }

    /* End of ConstCode for Outport: '<Root>/Out1' */
  }
}

권장 설정

응용 사례설정
디버그영향 없음
추적성영향 없음
효율성On (GUI), 'off' (명령줄) (실행, ROM), 영향 없음 (RAM)
안전 예방 조치영향 없음

프로그래밍 방식 사용

파라미터: InitFltsAndDblsToZero
유형: 문자형 벡터
값: 'on' | 'off'
디폴트 값: 'off'

버전 내역

R2006a 이전에 개발됨