런타임 코드 실행 기본 사항

응용 프로그램 성능 향상을 위한 방법을 이해하는 데 있어서 한 가지 핵심은 Flash Platform 런타임에서 코드가 실행되는 방식을 이해하는 것입니다. 런타임은 각 "프레임"에서 발생하는 특정 작업이 포함된 루프로 작동합니다. 여기서 프레임이란 간단히 말해서 응용 프로그램에서 지정된 프레임 속도로 결정되는 시간 블록을 의미합니다. 프레임 속도는 각 프레임에 할당된 시간을 말합니다. 예를 들어, 프레임 속도를 초당 30프레임으로 지정한 경우, 런타임에서 각 프레임의 길이는 1/30초가 됩니다.

응용 프로그램의 초기 프레임 속도는 제작 시 지정합니다. Adobe® Flash® Builder™ 또는 Flash Professional의 설정을 사용하여 프레임 속도를 설정할 수 있습니다. 또한 코드에서 초기 프레임 속도를 지정할 수도 있습니다. ActionScript 전용 응용 프로그램의 경우 [SWF(frameRate="24"] 메타데이터 태그를 루트 문서 클래스에 적용하여 프레임 속도를 설정합니다. MXML의 경우 응용 프로그램에서 frameRate 특성을 설정하거나 WindowedApplication 태그를 설정합니다.

각 프레임 루프는 두 개의 단계로 구성되며, 이 두 단계는 이벤트, enterFrame 이벤트 및 렌더링의 세 가지 부분으로 나뉩니다.

첫 번째 단계에는 두 부분(이벤트 및 enterFrame 이벤트)이 포함되며, 두 부분 모두 코드 호출을 발생시킬 수 있습니다. 첫 번째 단계의 첫 번째 부분에서는 런타임 이벤트가 수신되고 전달됩니다. 이러한 이벤트는 네트워크를 통한 데이터 로드 작업으로부터의 응답과 같은 비동기 작업의 완료 또는 진행률을 나타낼 수 있습니다. 여기에는 또한 사용자 입력을 통한 이벤트도 포함됩니다. 이벤트가 전달되면 런타임에서 사용자가 등록한 리스너에 있는 코드를 실행합니다. 이벤트가 발생하지 않으면 런타임에서 다른 액션을 수행하지 않고 이 실행 단계가 완료될 때까지 기다립니다. 작업이 없다고 해서 런타임에서 프레임 속도가 빨라지지는 않습니다. 다른 부분의 실행 주기 중에 이벤트가 발생하면 런타임이 이러한 이벤트를 대기열에 추가하고 다음 프레임에서 이를 전달합니다.

첫 번째 단계의 두 번째 부분은 enterFrame 이벤트입니다. 이 이벤트는 항상 프레임마다 한 번씩 전달되기 때문에 다른 이벤트와 구분됩니다.

모든 이벤트가 전달되면 프레임 루프의 렌더링 단계가 시작됩니다. 이때 런타임에서는 화면에 표시되는 모든 가시 요소의 상태를 계산하고 요소들을 화면에 그립니다. 그런 다음 경주장을 도는 선수들처럼 이러한 프로세스가 계속 반복됩니다.

참고: updateAfterEvent 속성을 포함하는 이벤트의 경우 렌더링 단계를 기다리지 않고 즉시 강제로 렌더링을 수행할 수 있습니다. 그러나 이로 인해 성능 문제가 자주 발생하면 updateAfterEvent 를 사용하지 마십시오.

프레임 루프의 두 단계에 각각 동일한 시간이 소요된다고 생각하기 쉽습니다. 이 경우 각 프레임 루프의 절반 동안에는 이벤트 핸들러와 응용 프로그램 코드가 실행되고, 나머지 절반 동안에는 렌더링이 수행됩니다. 그러나 실제로는 이와 다른 경우가 많습니다. 때로는 응용 프로그램 코드에서 프레임이 사용할 수 있는 시간이 절반 이상 사용되어 할당된 시간이 더 많이 소요되고 렌더링에 사용할 수 있는 할당 시간이 줄어들 수 있습니다. 또한 필터 및 블렌드 모드와 같이 시각적인 내용이 복잡할 경우에는 렌더링에 필요한 시간이 프레임 시간의 절반 이상일 수 있습니다. 이러한 단계에서 소요되는 실제 시간은 유동적이기 때문에 프레임 루프를 일반적으로 "탄력적 경주장(elastic racetrack)"이라고도 부릅니다.

프레임 루프에서 조합된 작업(코드 실행과 렌더링)의 시간이 너무 오래 걸릴 경우에는 런타임이 프레임 속도를 유지할 수 없습니다. 이 경우에는 할당된 시간보다 많은 시간이 소요되어 프레임이 늘어나므로 다음 프레임이 트리거되기 전에 지연이 발생합니다. 예를 들어 프레임 루프에 1/30초보다 긴 시간이 소요되면 런타임에서 초당 30프레임의 속도로 화면을 업데이트할 수 없습니다. 프레임 속도가 느려지면 성능이 저하됩니다. 그러면 애니메이션 장면이 불규칙하게 전환될 수 있습니다. 심한 경우에는 응용 프로그램이 멈추고 윈도우에 아무 것도 표시되지 않게 됩니다.

Flash Platform 런타임 코드 실행 및 렌더링 모델에 대한 자세한 내용은 다음과 같은 리소스를 참조하십시오.