플렉스 성능과 개발생산성 향상

18
플플플 플플플 플플플플플 플플 C.A.N. 홈홈홈홈 홈

description

플렉스 성능과 개발생산성 향상. C.A.N. 홈페이지 팀. 기술의 빛과 그늘 ( P.520 ). 기술과 비용의 상관 관계. 비 용. 기 술. 플렉스 성능 향상 요소 - 플렉스 성능 향상 공식. 플렉스 애플리케이션 사이즈 제한 애플리케이션 사이즈 최대 허용 크기 = 네트워크 전송 속도 x 화면 로딩까지 걸리는 시간 ( 초 ) 데이터 전송 건수의 가이드 데이터 전송량 = 네트워크 전송 속도 x 데이터 로밍까지 걸리는 시간 ( 초 ). - PowerPoint PPT Presentation

Transcript of 플렉스 성능과 개발생산성 향상

Page 1: 플렉스  성능과 개발생산성 향상

플렉스 성능과 개발생산성 향상C.A.N. 홈페이지 팀

Page 2: 플렉스  성능과 개발생산성 향상

기술의 빛과 그늘 ( P.520 )

기술과 비용의 상관 관계

기 술비 용

Page 3: 플렉스  성능과 개발생산성 향상

플렉스 애플리케이션 사이즈 제한애플리케이션 사이즈 최대 허용 크기 = 네트워크 전송 속도 x 화면 로딩까지 걸리는 시간 ( 초 )

데이터 전송 건수의 가이드데이터 전송량 = 네트워크 전송 속도 x 데이터 로밍까지 걸리는 시간 ( 초 )

플렉스 성능 향상 요소 -플렉스 성능 향상 공식

Page 4: 플렉스  성능과 개발생산성 향상

플렉스 애플리케이션 사이즈에 영향을 주는 요소화면의 복잡도 액션스크립트 사용방식 임베드된 애셋의 개수와 크기

1. 컨트롤 , 컨테이너 개수2. 서브 화면의 개수

1. 동적으로 만들어 내는 객체의 개수와 크기2. 액션스크립트 객체와 데이터 크기3. 데이터 바인딩 및 [Bindable] 로 선언된 객체

1. 폰트2. 이미지3. 데이터

플렉스 성능 향상 요소 – 애플리케이션 사이즈 축소 방안

애플리케이션 사이즈 축소 방안화면의 복잡도 감소 액션스크립트 사용 방식 임베드된 에셋 사용 줄이기

1. 컨트롤 , 컨테이너 중첩 최소화2. 서브 화면들은 모듈이나 별도의

애플리케이션으로 분리1. 데이터 타입 확인 ( number(x)

int(o) )2. 불필요한 데이터 바인딩 (x)

1. 이미지는 웹으로 다운로드2. 기본 폰트 사용3. 데이터는 런타임으로 나눠서 받음

Page 5: 플렉스  성능과 개발생산성 향상

int

Numberint Array

ArrayCollection

[Bindable] int[Bindable] Number

[Bindable] int Array[Bindable] ArrayCollection

10201040106010801100112011401160

프로파일러 결과

성능 향상 테크닉1. 변수에 [Binable] 선언을 하면 애플리케이션 선언을 안 했을 경우보다 메모리 사용량이 커진다 .

프로파일러 성능 측정

Page 6: 플렉스  성능과 개발생산성 향상

데이터바인딩이 필요하지 않으면 배열에는 Array 를 사용하라성능 : ArrayCollection < Array

임베드된 에셋들은 애플리케이션 사이즈에 그대로 추가된다 .화면상 로드되고 나서 사용하는 메모리 사용량은 비슷하기 때문에 크기도 줄이는 편이 낫다 . gif < jpg < png < bmp

성능 향상 테크닉

임베드된 이미지

웹 경로 이미지

8000 8100 8200 8300 8400

메모리

임베드된 이미지

웹 경로 이미지

0 200 400 600 800 1000 1200

SWF 사이즈

Page 7: 플렉스  성능과 개발생산성 향상

컨테이너의 creationPolicy 는 queued 옵션이 auto 나 all 옵션에 비해 메모리를 적게 사용

성능 향상 테크닉

auto

all

none

queued

950 1000 1050 1100 1150 1200 1250

creationPolicy 옵션별 메모리양

AC3 MXML

mx.core.ContainerCreationPolicy.AUTOmx.core.ContainerCreationPolicy.ALLmx.core.ContainerCreationPolicy.NONEmx.core.ContainerCreationPolicy.QUEUED

<mx:Container creationPolicy="auto" ...><mx:Container creationPolicy="all" ...><mx:Container creationPolicy="none" ...><mx:Container creationPolicy="queued" ...>

auto

all

none

queued

0 0.5 1 1.5 2 2.5 3 3.5 4

creationPolicy 속도

Page 8: 플렉스  성능과 개발생산성 향상

서브 화면은 Module 로 만들어 메인 애플리케이션에 최적화하라최적화 전 : 744k최적화 후 : 484k

공통 컴포넌트는 RSL(Runtime Shared Library) 로 만들어 공유하고 인증 프레임웍 RSL(Runtime Shared Library) 을 적용해 애플리케이션 사이즐 최소로 줄임

성능 향상 테크닉

Page 9: 플렉스  성능과 개발생산성 향상

ModuleLodader( P.524 )

담당자 ModuleLoader SWFLoader

독립 실행 디자이너 독립 실행런타임로드 가능 가능메인애플리케이션과 컴포넌트공유

가능 안됨

루트 태그 <mx:Module> 또는 ModuleBase 상속 <mx:Application>

SubMenu 5

SubMenu 4

SubMenu 3

SubMenu 2

SubMenu 1

SubMenu 0메인 애플리케이션

0 100 200 300 400 500 600

MoudleLoader

MoudleLoader

MoudleLoader

MoudleLoader

MoudleLoader

MoudleLoader

MoudleLoader

SWFLoader

SWFLoader

SWFLoader

SWFLoader

SWFLoader

SWFLoader

SWFLoader

인증 프레임웍 RSL 적용 테스트

[ 표 ] ModuleLoader와 SWFLoader 비교

Page 10: 플렉스  성능과 개발생산성 향상

MXML 컴포넌트로 생성File > New > MXML Moduble

모듈 생성

Mxmlc 로 일일이 컴파일 안함 메인 애플리케이션에 대해 최적화

Page 11: 플렉스  성능과 개발생산성 향상

모듈 최적화

Optimize for appli-cation

Do not optimize0

100

200

300

400

모듈 사이즈 비교

Page 12: 플렉스  성능과 개발생산성 향상

Moudle 생성 - 1

                                                       

1. Flex Project 를 생성한다 . Flex 3 Builder 의 메뉴에서 File > New... > Flex Project 를 선택하면 다음 창이 나온다 .

Page 13: 플렉스  성능과 개발생산성 향상

Moudle 생성 - 2

                                                              

압축 파일을 풀면 아래와 같은 프로그램들이 있는데 아래와 같이 선택된 프로그램만 복사하고 바로 생성한 Project 의 src 폴더에 복사한다 .

복사

복사한 소스에서 insurancemodules 폴더안에 mxml 파일이 3 개가 있다 . 소스내용을 보면 알겠지만 태그를 사용한 것을 볼수 있다 . 즉 , 이 3 개의 소스는 모듈이다 .

Page 14: 플렉스  성능과 개발생산성 향상

Moudle 생성 - 3

3. 모듈 추가메뉴에서 Project > Properties 를 선택하면 아래와 같은 창이 나오는데 ... 여기서 왼편에 Flex Modules 를 선택하고 해당 3 개의 모듈을 등록후 OK 를 하면 된다 .

컴파일러는 이 모듈을 따로 컴파일하여 각각 3 개의 swf 파일을 생성해준다 . 이 swf 파일은 직접 실행되는 것이 아니라 Main Application 에서 필요할 때 동적으로 로드해서 사용하게 된다 .

Module 등록을 하면 옆에 그림과 같이 3 개의 mxml 파일에 파란색 마크가 붙어 이것이 모듈이라는 것을 가시적으로 확인할 수 있다 .

Page 15: 플렉스  성능과 개발생산성 향상

Moudle 생성 - 4

4. Main Application 설정이 부분은 생략해도 되나 , 실행할 때마다 해당 Application 을 선택하는 번거로움을 없애기 위한 것이다 . 모듈 설정때와 동일한 방법으로 Flex Builder 의 메뉴에 Project > Properties 를 선택한 다음 좌측에 Flex Applications 를 선택한다 . 그리고 아래와 같이 EventApp.mxml 을 Add 한다음 Set as Default 버튼을 이용하 default 로 고정시켜준다 . 이렇게 하면 실행할 때 기본적으로 MoudleText.mxml 이 Main Application 이 아니라 EventApp.mxml 이 Main 이 되어 실행된다 .

Page 16: 플렉스  성능과 개발생산성 향상

Moudle 생성 - 5

실행 화면개의 Main Application 에서 3 개의 Module 을 로드하는 프로그램 완성

Page 17: 플렉스  성능과 개발생산성 향상

성능 프로파일링 메모리 프로파일링 병목구간을 찾아 내는 기능 메소드 지연 구간이나 호출 빈도가 높은 곳 검출

각 객체들의 메모리 사용량 과도한 메모리 사용 객체 검출 메모리 누수 구간 검출

플렉스 빌더의 메모리와 성능 프로파일러Profile View

Memory Usage View

Live Object View

Page 18: 플렉스  성능과 개발생산성 향상

플렉스 메모리

메모리 사용량초기 로딩시 메모리

화면 로직중 수행되는 메모리

그림 1. Flash Player 에서 표시 및 회수 방법을 통해 활성 참조가 없는 객체 식별