출생 배경
Adobe의 Flash 컴파일러(ASC, ActionScript Compiler)는 성능이 너무 "어제"이고 Flash 가상 머신은 여전히 성능 향상의 여지가 많습니다. Flash는 종종 장난감으로 취급되거나 농담으로 CPU 돼지라고 불립니다. 일반적으로 SWF를 수동으로 최적화하는 경우는 거의 없지만 대부분의 경우 잘 실행되지만 SWF 파일의 크기가 너무 크거나 로딩 시간이 너무 길거나 코드 실행 시간이 너무 길어 프레임이 발생하는 경우가 있습니다. 비율이 너무 높으면 코드 간소화, 정적 리소스(사진, 비디오 등) 압축 등 SWF 최적화를 고려해야 합니다. 그러나 수동 최적화로 인한 성능 향상은 매우 제한적입니다. 다행히도 Apparat 프레임워크는 수동 최적화의 악몽에서 벗어나는 데 도움이 될 수 있습니다. 그것으로부터 최적화됩니다. Apparat의 저자인 Joa Ebert는 올해 FlashAndTheCity 컨퍼런스에서 뛰어난 작업으로 "2010년 가장 천재적인 플래시 개발자"와 "2010년 가장 뛰어난 기여자"라는 두 개의 상을 받았습니다. " 대상.
빌드 환경
Apparat 프레임워크는 Scale을 통해 작성되었습니다. 연습하기 전에 Scala 2.8.0 및 Java 1.6을 설치해야 합니다. 7-zip 설치는 선택 사항입니다. 이러한 기본 운영 환경(PATH 환경 변수에 추가해야 함)을 설정한 후 Google Code 에서 최신 설치 패키지(현재 1.0RC8)를 다운로드할 수 있습니다. 다운로드 후 새 폴더에 압축을 풀어보세요. 포함된 파일은 다음과 같습니다.
Apparat는 tdsi, 스트리퍼, 리듀서 등과 같은 많은 명령줄 도구와 매우 특별한 ActionScript API(SWC 파일에 존재)를 제공합니다. 다음으로 Apparat이 어떻게 Flash 속도를 높이는지 살펴보겠습니다.
바이트코드 최적화
Apparat의 핵심 기능은 TAAS(Three Address ActionScript Compiler)입니다. TAAS는 ActionScript의 어떤 라인도 변경하지 않으며 일반적인 최적화 기술을 사용하여 상당한 성능 향상을 얻을 수 있습니다. Adobe의 컴파일러 ASC와 달리 Apparat는 컴파일된 SWF 및 SWC 파일을 분석, 재구성 및 재조립합니다.
Flash 가상 머신 AVM의 바이트코드는 스택 기반으로 되어 있어 Apparat에서는 먼저 스택 기반 바이트코드를 CFG(Control Flow Graph)로 변환한 후 CFG(Three. 주소 코드) 코드, 즉 TAAS(Three Address ActionScript)입니다.
TAC/TAAS를 사용하면 인라인 확장 , 복사 전파 , 상수 폴딩 , 데드 코드 제거 등과 같은 컴파일러 최적화 기술을 기반으로 플래시 바이트코드를 다시 최적화할 수 있습니다.
Apparat는 보다 효율적인 API가 포함된 몇 가지 유용한 SWC 파일을 제공하며 아직 ActionScript에서 사용할 수 없는 Alchemy API도 포함합니다. 이러한 API를 사용한 SWF가 Apparat에 의해 처리된 후 Apparat는 해당 코드에 대해 인라인 최적화를 수행하는 것이 원칙입니다. 바이트코드 최적화를 위한 명령 형식은 다음과 같습니다.
tdsi -i 입력.swf -o 출력.swf
출처: Koubei.com UED 팀