본문 바로가기

프로그래밍 독서/자바스크립트 성능이야기

인사이트1

꽤 옛날 책이라서 읽는건 자유이나 가볍게 읽으라는 이야기를 들어서

 

가볍게 얻은 인사이트 위주로 정리하도록 하겠습니다.

 

1.

렌더를 할때 아이콘이나 이미지등이 개당 조그마한 시간을 차지해도 요즘은 굉장히 많은 이미지들이 첨부돼서 시간에 차이가 많이남.

이걸 해결하기위해서 css스프라이트등을 쓰기도 했음

 

2, 코드스타일

대부분의 브라우저에서 배열에 push메서드를 쓰는것(ex arr.push(i))보다 리터럴 방식을 쓰는것(ex arr[i] = i)이 두배정도의 성능이득이 있음.

오브젝트의 경우에는 리터럴을 쓰나 연산자를 쓰나(ex obj.i = i) 큰 성능차이가 없었음

 

3. 코드스타일

스코프 체인에 관해서 생각해봐야함.

현재 찾는 위치에 데이터가 없으면 그 상위 스코프에 가서 데이터를 찾아야함.

이러면 일을 두번하는셈이 됨.

만약에 중첩함수등으로 구성돼서, 엄청 상위스코프까지 간다면 n번 찾아야하므로 비효율적임.

당장 이 스코프에서 쓰고 말 것이라면 전역과 같은 방식으로 선언하는 것보다는 쓰이는 곳의 스코프에 위치하도록 하는게 효과적임

 

4. 코드스타일

for-in은 성능이 아주 나쁘다..

왜 나쁘냐하면 for in 은 배열을 배열로 보지 않고 일반객체로 취급한 뒤 객체의 속성을 무작위로 탐색하기 때문에

항상 성능이 나쁜편이다. 

꼭 써야하는 경우(ex index를 주기 어려운 객체와 같은 경우에서 탐색할때)가 아니라면 지양해야 한다.

 

5. 코드스타일

사실 이런 것보다도 좋은 알고리즘을 짜서 최소화된 접근횟수나 반복횟수를 가지는 경우면 더 좋다.(코테 생각하면 더더욱)

다만,, 책에서는 성능이슈만 봐서 언급 안했지만, 성능과 가독성을 트레이드 오프 해야할 시기가 분명히 잇을 것이기 때문에 잘 판단하도록 하자.

개인적으로 요즘 코드를 짜면서는 큰 차이가 없다면 가독성을 선택하는게 좋지 않나 생각한다.