2011-12-05 4 views
3

저는 JavaScript에 약간 익숙합니다. 나는 그것을 클라이언트 측에서 잠시 동안 여기저기서 사용했지만, 이제는 서버 측 자바 스크립트로 모험을하고 있습니다. 이 질문은 작성 및 속성의 효율적인 정의와 관련하여 Javascript 객체에 관한 것입니다.JavaScript에서 속성을 사용하여 개체를 만드는 가장 효율적인 방법은 무엇입니까?

성능 향상을 위해 var o = {};으로 개체를 만드는 것이 var o = new Object();보다 좋습니다. 개체에 속성을 추가하는 방법의 성능 차이가 있습니까?

예를 들어

,이 상황 사이의 성능 차이가 :

var o = { 
    thing1: "yardigooven", 
    thing2: "goovenyardi", 
}; 

이 상황?

var o = {}; 
o.thing1 = "yardigooven"; 
o.thing2 = "goovenyardi"; 

이 바람직하다 내가 첫 번째 경우를 가정하고있어,하지만 내가 원하는 그런 식으로 모든 객체 정의를 작성하기 전에 반드시 확인하십시오.

감사합니다.

+2

정말 성능이 걱정 되십니까? – Dykam

+0

지도 선언을 구문 분석 할 때 성능 저하가있을 수 있지만 단지 추측입니다 –

+0

jsperf.com에 대해 들어 보셨습니까? – Domenic

답변

11

우선, var o = {};var o = new Array();은 동일하지 않습니다. 첫 번째는 객체를 초기화하고, 두 번째는 배열을 초기화합니다. var o = {};var o = new Object();은 동일합니다.

이후에 속성을 추가하는 대신 개체 리터럴을 사용하는 경우에 대해 설명합니다. 어느 것이 가장 빠릅니까? 대답은 우리가 상관하지 않으며, 당신도하지 말아야한다는 것입니다. 성능에 차이가 있다면 너무 작아서 한 번에 1 백만 개의 개체를 만들더라도 결코 영향을 미치지 않을 것입니다.

이것은 조기 최적화라고하며, 많은 중급 프로그래머의 단점입니다. 성능 문제가 발생하기 전에는 최적화에 대해 걱정하지 마십시오. 그런 다음 프로파일 러를 사용하여 병목 현상이 어디에 있는지 감지하고 해결합니다. 앱 만들기에 대해 걱정하십시오.

완성을 위해 here is a test I ran on jsperf. 제 브라우저 인 Chrome 15에서는 객체 리터럴 초기화 속도가 53 % 빨라졌습니다. 와우, 53 %, 엄청난 권리 야? 초기화 후에 속성을 사용하는 테스트에 대한 툴팁 위에 마우스를 놓은 경우를 제외하고는

란은 0.077 초에 681,285 번을 나타냅니다.

숫자는 다를 수 있지만 가장 느린 것으로 간주되는 방법은 여전히 ​​모든 표준에서 상당히 빠르게 진행된다는 것을 알 수 있습니다. 둘 다 어떤 목적으로도 충분히 빠르다고 말하는 것이 안전하다고 생각합니다. 당신이 선호하는 것을 사용하십시오.

+0

죄송합니다. 실수였습니다. 나는 새로운 객체()를 의미했다. 나는 내 질문에 또 다른 읽기를해야했다. 귀하의 의견을 보내 주셔서 감사합니다. 나는 그것이 내 개발 프로세스에 부정적인 영향을 미칠 때까지 성능에 관심을 갖기를 원하지 않지만 공통 루틴을위한 효율적인 대안을위한 습관을 개발하는 것이 도움이 될 것이라고 생각했다. – Aejay

+0

@Ajjay하지만 결국 정말 중요하지 않습니다. 나는 당신이 선호하는 스타일을 사용하거나 선명도 같은 속도보다는 다른 이유로 하나를 선택하도록 제안합니다. 나, 위의 모든 것을 위해 나는 문자 표기법을 선호한다. 그리고 플러스로서, 그것은 가장 빠른 것입니다 :) –

3

조기 최적화에 대한 다른 사람들의 조언에 유의하십시오. 즉, 다양한 JavaScript 인터프리터 구현간에 크게 다를 수있는 이러한 구현 세부 사항에 초점을 두지 마십시오.

그러나 this JSPerf benchmark에 기초하여 표본의 크기는 하나 (크롬/MAC OS X에), 오브젝트 형태 리터럴 (o = {foo:'bar'})의 구조 (o={}; o.foo='bar') 후 속성을 설정하는 것보다 훨씬 빠르게이다.

관련 문제