Rational® Rhapsody®에는
포트 연결을 위해 생성된 코드를 최적화하는 옵션이 포함되어 있습니다. 많은 시나리오에서
이 작업을 수행하면 애플리케이션의 성능이 향상될 수 있습니다.
주: 이 기능은 C++ 코드에만 사용할 수 있습니다.
포트가 모델에서 사용될 때 비동작 포트 체인이 서로 연결되어 한 쪽 끝에서
다른 끝으로 호출이 위임되는 경우가 종종 있습니다. 이로 인해 런타임 성능이
저하되고, 애플리케이션 디버깅도 더 어려워집니다.
이러한 문제점을 방지하기 위해 포트 연결 최적화 기능을 사용할 수
있습니다. 이 코드 생성 옵션을 사용하는 경우, 생성된 코드에는 이러한 체인
유형의 한 쪽 끝에 포트를 연결하는 "바로 가기"가 포함되어 있습니다.
포트에 대한 연결 최적화 기능을 사용할지 여부를 결정할 때
트래이드 오프가 있는지를 고려하십시오. 최적화된 코드는 성능을 향상시키지만
더 많은 메모리를 사용합니다.
이 최적화 기능을 사용할 때 다음 포트 유형과 관련된 연결에 대해서는
코드가 최적화되지 않습니다.
- 고속 포트
- 멀티캐스팅 포트
- 이벤트 수신만 포함하는 필수 인터페이스가 있는 포트
- 하나 이상의 이벤트를 포함하는(또는 하나 이상의 이벤트가 있는
클래스에서 파생된) 제공된 인터페이스가 있는 포트
포트 연결 최적화 사용은 다음 특성으로 제어됩니다.
- CPP_CG::Configuration::OptimizePortConnectors - Rational Rhapsody가
최적화에 필요한 코드를 전체적으로 또는 부분적으로 생성해야 하는지 여부를 판별합니다.
- CPP_CG::Port::IncludeInConnectorOptimization - 사용 시 최적화에 포함되는
포트를 판별합니다.
포트 연결 최적화 코드의 생성 제어
포트 연결 최적화 코드는 다음으로 구성됩니다.
- 기능을 사용 가능하게 만드는 인프라 코드
- 실제로 기능을 사용 가능으로 설정하는 OM_OPTIMIZE_PORT_CONNECTORS
매크로에 대한 호출. 이 매크로는 각 포트의 대상을 계산하고 설정하는 최적화
알고리즘을 호출합니다.
OptimizePortConnectors 특성은 이 코드의 생성을 제어하며,
다음과 같은 가능한 값을 제공합니다.
- NoOptimization — 최적화가 사용되지 않음 - 인프라 코드나 매크로에 대한 호출이
생성되지 않음
- ActivateInComponent — Rational Rhapsody가
인프라 코드 및 매크로에 대한 호출을 생성함. 실행 가능 컴포넌트의 경우,
매크로 호출은 기본 함수에 생성됩니다. 라이브러리의 경우, 호출은 컴포넌트를
나타내는 클래스의 생성자에 생성됩니다.
매크로에 대한 호출은 모든 관계가 초기화된 후에 작성됩니다.
이 값이 사용되는 경우, 최적화는 컴포넌트 레벨에 있는 포트에 사용할 수 있습니다.
즉, 컴포넌트 내의 링크만 최적화됩니다.
- ActivateExternally — 필수 인프라 코드가 생성되지만
Rational Rhapsody가
OM_OPTIMIZE_PORT_CONNECTORS 매크로에 대한 호출을 생성하지 않습니다.
따라서 사용자가 최적화된 컴포넌트를 사용하는 컴포넌트의 코드에 있거나 기타
사용자 제공 코드에 있는 이 매크로에 대한 호출을 포함시켜야 합니다.
ActivateInComponent 값은 실행 파일에 적합하지 않습니다. 라이브러리의
경우, 라이브러리를 사용하는 컴포넌트가 포트 커넥터 최적화의 사용 여부를
알아야 할 필요가 없는 경우에 적합합니다.
ActivateExternally 값은 상호 컴포넌트 연결이 최적화되어야 하는
경우에 사용해야 합니다.
또한 포트 연결이 수동으로 초기화되는 경우에도 적합합니다.
주: 컴포넌트의 포트 사이에 링크가 없는 경우에는 분명 최적화된
코드가 필요하지 않습니다. 그러나 OptimizePortConnectors 특성 값이 NoOptimization
이외의 값으로 설정된 경우, 필수 인프라 코드가 생성되므로 더 많은 메모리가
사용됩니다. 따라서 포트 사이에 링크가 없는 컴포넌트가 있으면 해당 특성이
NoOptimization으로 설정되었는지 확인해야 합니다.
포트 연결 최적화 제어
최적화를 사용하도록
OptimizePortConnectors 특성 값을 설정한 경우, CPP_CG::Port::IncludeInConnectorOptimization
부울 특성 값을 설정하여 최적화할 포트 연결을 제어할 수 있습니다.
특성 값이
False로 설정된 포트가 포트 체인에 포함되어 있는 경우, 해당 포트는 최적화에 포함되지
않지만 최적화는 체인에 있는 기타 포트 연결에 계속 사용됩니다.
포트 연결 최적화 코드 사용자 정의
포트 연결
최적화 코드를 사용자 정의하는 데 다음 특성을 사용할 수 있습니다(예를 들어,
사용된 매크로 이름 및 포함된 헤더 파일).
- CPP_CG::Framework::PortConnectorsOptimizationBaseClassPattern
- CPP_CG::Framework::PortConnectorsOptimizationImpIncludeFiles
- CPP_CG::Framework::PortConnectorsOptimizationOptimizationPattern
- CPP_CG::Framework::PortConnectorsOptimizationRegistrationPattern
- CPP_CG::Framework::PortConnectorsOptimizationSpecIncludeFiles