2011-07-05 1 views
13

thread.substr(0,1)의 사용과 .charAt(0)의 사용간에 실제 차이가있는 경우 첫 번째 문자를 가져올 때 실제로이 문자가 궁금합니다 (실제로는 하나의 문자 만 입력 한 경우에도 적용될 수 있음)..substr (0,1) 또는 .charAt (0)의 차이점은 무엇입니까?

각각 다른 것보다 빠릅니다.

답변 해 주셔서 감사합니다.

최대

+0

프로파일 링을 시도해 볼 수도 있습니다 ... 또한 브라우저 의존성 일 수도 있습니다. –

+1

벤치 마크를 만들 수 있습니다 (http://jsperf.com/). –

+0

@ Felix Kling : 링크에 대한 감사, 북마크 됨! – JMax

답변

17

측정이 중요합니다!

http://jsperf.com/substr-or-charat으로 이동하여 직접 벤치 마크하십시오.

substr (0,1)은 내 컴퓨터에서 초당 21,100,301 회 실행되며 charAt (0)는 초당 550,852,974 회 실행됩니다.

문자열을 분할하는 대신 charAt가 문자열을 배열로 내부적으로 액세스하는 것으로 의심됩니다.

주석에서 발견 된 것처럼 문자열 [0]을 사용하여 char에 직접 액세스하는 것은 charAt (0)를 사용하는 것보다 약간 빠릅니다.

+1

맥스의 대답은 JS가 아니라 자바에 대한 것이 었습니다 ... 또한 결과가 잘못된 방향으로 나타납니다! – Alnitak

+0

첫 번째 숫자는 의심 할 여지없이 높습니다. – templatetypedef

+0

아, 숫자가 틀 렸습니다! –

4

전체 스크립트가 빠른 문자열 조작의 필요성을 기반으로하지 않는다면, 나는 성능 측면에 대해 전혀 걱정하지 않을 것입니다. 나는 그것이 읽을 수 있고 언어에 의해 제공되는 직업을위한 가장 구체적인 도구라는 근거로 charAt()을 사용할 것입니다. 또한 substr()은 엄격하게 표준이 아니며 새로운 ECMAScript 구현에서는이를 생략하지 않을 수도 있습니다. str.charAt(0)에 대한 표준 기반 대안은 str.substring(0, 1)str.slice(0, 1)이고 ECMAScript 5 구현의 경우 str[0]입니다.

관련 문제