덧글수0
자바스크립트는 어떻게 작동하는가: V8 엔진의 내부 + 최적화된 코드를 작성을 위한 다섯 가지 팁
자바스크립트 최적화 자료는 찾기 힘들었는데, 크롬 v8 엔진에 한정되어 있지만 좋은 글이었다.
내용 중에 내가 highlight 로 표시한 부분은 2번과 4번이다.
2. 동적 속성: 객체 생성 이후에 속성을 추가하는 것은 히든 클래스가 변하도록 강제하고 이전의 히든클래스를 대상으로 최적화되었던 모든 메소드를 느리게 만듭니다. 대신에 모든 객체의 속성을 생성자에서 할당합니다.
→ 클래스를 사용할 때 속성은 다 생성자에서 정의해주는 게 최적화에 도움이 된다는 얘기다. 보통 다들 이렇게 하고 있겠지만 혹시나 다른 곳에서 속성을 추가하면 퍼포먼스에 영향이 있다고 한다.
4. 배열의 요소를 삭제하지 마십시오. 그 배열의 키가 띄엄띄엄 배치됩니다.
→ 자바스크립트는 해시테이블 접근에 C# 이나 JAVA보다 비용이 많이 든다고 한다. 배열의 키가 띄엄띄엄 배치되면 해시테이블이 되고, 해시테이블이 되면 퍼포먼스가 나빠지게 된다.
자바스크립트 최적화 자료는 찾기 힘들었는데, 크롬 v8 엔진에 한정되어 있지만 좋은 글이었다.
내용 중에 내가 highlight 로 표시한 부분은 2번과 4번이다.
2. 동적 속성: 객체 생성 이후에 속성을 추가하는 것은 히든 클래스가 변하도록 강제하고 이전의 히든클래스를 대상으로 최적화되었던 모든 메소드를 느리게 만듭니다. 대신에 모든 객체의 속성을 생성자에서 할당합니다.
→ 클래스를 사용할 때 속성은 다 생성자에서 정의해주는 게 최적화에 도움이 된다는 얘기다. 보통 다들 이렇게 하고 있겠지만 혹시나 다른 곳에서 속성을 추가하면 퍼포먼스에 영향이 있다고 한다.
4. 배열의 요소를 삭제하지 마십시오. 그 배열의 키가 띄엄띄엄 배치됩니다.
→ 자바스크립트는 해시테이블 접근에 C# 이나 JAVA보다 비용이 많이 든다고 한다. 배열의 키가 띄엄띄엄 배치되면 해시테이블이 되고, 해시테이블이 되면 퍼포먼스가 나빠지게 된다.



최근 덧글