pro typescript.ch07.exception, memory, performance

Post on 13-Apr-2017

226 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Pro TypeScriptCh.07 Exception, Memory, Perfor-mance

윤석준 (seokjoon.yun@gmail.-com)

2

Agenda Exceptions Memory Performance

프로그램이 계속해서 처리가 불가능 함을 나타내기 위해 사용Program Logic 처리를 위해 사용하는 것은 부적절

Exceptions예외

4

Exception

발생한 예외는 JavaScript Console 에 표시됨 Windows, Linux : Ctrl + Shift + I or F12 Mac : Cmd + Opt + I

별도 처리 가능

5

Throwing Exceptions

6

Throwing Exceptions

Error 를 상속받았지만 별 다른 구현 없음

-> Error 타입만으로 구분되는 것으로도 의미가 있음

toString() 를 구현하여 Console 에 출력되는 메세지를 직접 정의

7

Throwing Exceptions 우리가 작성한 코드에서 발생한 Error 와

다른 곳에서 발생한 Error 의 구분이 가능

8

Exception Handling

별도의 처리를 하지 않으면 프로그램 종료 원할 경우 try – catch – finally 블록으로 감싸줘서 처리

9

Exception Handling

모든 종류의 Error 에 대해서 처리 비정상적인 상태로 계속 수행될 가능성이 있음

10

Exception Handling

처리 가능한 Error 만 처리 나머지는 다시 통과시키는 것이 바람직함

11

Error class hierarchy

12

Error class hierarchy

13

Error class hierarchy

관련 오류 중 Out Of Memory 같은 것을 제외하고는 대부분 자동으로 처리자원 해제 , 가비지 콜렉션에 대해서 설명

Memory메모리

15

Releasing Resources

대부분 API 들은 비동기 패턴으로 되어 있는 경우가 많음 오류 발생을 대비해서 try - finally 블록을

이용해자원해제를 보장해 주어야 함

16

Releasing Resources

sonsor 의 동작 open, read, sensorChange 어디에서 Error 가 발생하더라도 close 가

호출되는 것을 보장

17

Garbage Collection Reference Count ( 예전 방식 )

- Reference Count 가 0 이 되었을 경우 메모리

해제

- Circular Reference 의 경우 해제되지 않을 수

있음

18

Garbage Collection Mark and Sweep ( 최신 방식 )

- Root 에서 도달 가능한 객체를 찾은 뒤 , 나머지 객체를 해제

- 수행시간은 더 걸리지만 , 메모리 누수 발생 가능성을 줄여줌

성능 최적화와 프로그램 디자인은 trade-off 관계TypeScript, JavaScript 의 경우 여러 브라우저에서 테스트 해야 함수치적인 측정이 필요

Performance성능

20

Performance Measurement대상 코드

테스트 코드

21

Performance Measurement

22

Performance Measurement

여러번 반복하여 평균을 구하는 방법으로 측정

23

Performance Measurement 2 만번 수행 결과 : 2.73 ms

24

Performance Measurement 2 만번 수행 결과 : 214.45 ms Error 가 있는 경우 수행 결과가 바뀔 수 있음

Summary

26

Summary 예외 처리를 하면 비정상적으로 종료되는 현상 방지 가능

사용자 정의 예외를 작성하면 오류의 구분이 가능

해결 가능한 예외만 catch 절에서 처리

비동기 API 사용시 try-catch 절을 이용하여 자원을 관리하는 것이 좋음

요즘 브라우저들은 mark-and-sweep 알고리즘을 이용

가비지 컬렉터를 고려해야할 만큼 성능이 중요하다면 객체를 작은 크기로 생성

최적화 작업에 앞서 수치적으로 성능 측정

Thanks

상세설명 https://goo.gl/Ptw1aI

top related