About Caching

캐슁이란?

cache 는 어떠한 연산 결과를 미리 저장해놓은 것을 말한다. 그렇다는건 연산을 최소화 하기 위한 것이다.

캐슁은 왜 필요한가 ?

위에서도 이야기 했듯이 연산을 최소화 하기 위한 것이다. 연산을 최소화 한다는 것은 저장공간 또는 CPU 를 최소한의 리소스로 사용하겠다는 것과 같다.

상황을 보자.

어떠한 결과값을 매번 그려야 하는 함수가 있을 때 함수 내부에 있는 코드는 말 그대로 매번 다시 실행된다.

function draw() {
    var path = getAbsolutePath();

    drawPath(path);
}

getAbsolutePath() 에서 나오는 값이 상수 값 또는 이미 정해진 값이라고 친다면 매번 실행할 필요가 없어진다.

var path = getAbsolutePath();

function draw() {
    drawPath(path);
}

이제 draw()함수가 실행되도 더 이상 getAbsolutePath() 를 실행하지 않게 된다.

실제 인터랙션에 필요한 부분만을 그려야한다.

그럴려면 데이타를 명확히 알아야 한다.

그래야 캐슁도 할 수 있다.

데이타를 구분하자.

계속 적으로 계산되는 데이타인지 아님 한번만 연산되는 데이타인지 아니면 특정 시점에 연산되는 데이타인지를 구분할 수 있어야한다.

이것은 실제로 loop 를 도는 형태를 보면서 파악 해야하는데 무심코 지나치기 쉽다.

loop 안에서 데이타를 계속 생성하게 되면 gc 에 영향을 받을 수 있는 Array, Object 등이 지속적으로 생겼다가 사라질 확률이 크다.

초반에 코드를 만들면서 생각을 많이 해야한다.

몇 가지를 정리해보면

  • 리턴되어야 하는 데이타인지 아닌지 구분한다.
  • 리턴되지 않는 데이타는 되도록이면 loop 안에서 생성하지 않는다.
  • 리턴될 데이타의 경우도 필요하면 캐쉬된 데이타를 리턴한다.

#

results matching ""

    No results matching ""