2012-10-12 3 views
3

나는 jQuery에 대한 성능 벤치 마크를 실행 중이었고 (묻지 않음) 흥미로운 것을 발견했습니다. 웬일인지 this[0] = elementthis.foo = element에 비해 아주 느린 것처럼 보입니다. 다음은 의무적 인 jsPerf case입니다.JavaScript - 문자열 대 정수 키

누구나 왜 그런 성능 저하가 있었는지 설명 할 수 있습니까? 명백한 "문자열 키 사용"과 별도로 성능을 향상시킬 수있는 방법이 있습니까?

+0

성능 차이를 느낄 수 있습니까? (즉, 30 % 느린 대 100x 느리게) – BostonJohn

+0

다른 테스트 http://jsperf.com/test-string-and-index. 퍼포먼스 히트는 배열로 무언가를해야한다고 생각합니다. – nhahtdh

+0

유효한 식별자로 간주되지 않는 속성을 사용하는 경우에는 속도가 중요하지 않습니다. 이 경우 성능 차이에 관계없이'[] '을 사용해야합니다. –

답변

1

[0]은 호환되지 않아 문자열 ("0")로 변환 된 다음 문자열 조회 ["0"]으로 사용되어야합니다.

나는 그것이 무슨 일이 일어나고 있는지를 100 % 설명하지만, 그것은 보편적 인 부분입니다.
나머지 대부분은 엔진별로 기반 최적화가 될 것입니다.

이 또한 배열이 아니며 배열 조회도 아닙니다.
개체의 대괄호 표기법입니다.

+0

그러나 배열'[0]'은'[ '0']'보다 빠릅니다. http://jsperf.com/string-integer-property/5. – pimvdb

+0

그것은 배열이기 때문입니다. 배열은 정수를 사용하고 객체는 문자열을 사용합니다. – Norguard