당신은 이미 jsperf로 자신의 질문에 대답했다고 생각합니다. 특정 작업에서 속도가 정말로 중요하며이 테스트가 필요한 것의 유효한 척도 인 경우 getElementsByClassName
에 대한 자체 테스트를 수행하고 jsperf에서 400 배 더 빠르기 때문에 사용 가능한 경우이 테스트를 사용하십시오.
jQuery 호출은 설정 오버 헤드를 합리적으로 감당할 수 있습니다. 작은 문서에서이 설정 오버 헤드로 인해 jsperf 결과가 훨씬 더 큰 DOM이있는 문서에서 많이 볼 수없는 방식으로 왜곡 될 수 있다고 상상할 수 있습니다. 따라서 훨씬 큰 DOM으로 결과를 검증 해 보시기 바랍니다. 당신이 이것을 부르는 문서의 전형 일 수도 있습니다.
this doc에 따르면 jQuery는 간단한 클래스 선택기에 getElementsByClassName
을 사용해야합니다.
편집 : 나는 jQuery를 $('.select')
이 함수 호출을 통해 강화. 내부적으로 getElementsByClassName을 사용하고 있지만, jQuery의 놀라운 일반 성격 때문에 (복잡한 정규 표현식을 실행하는 것을 포함하여) 거기에 도착하기 전에 많은 오버 헤드가 발생합니다. (원하는 것이 무엇인지 알아 내기 전에 많은 것을 테스트해야합니다. 간단한 클래스 이름 선택자).
jsPerf에 큰 DOM을 추가하면 jQuery 설치 오버 헤드가 전반적인 실행 시간 중 훨씬 작은 부분이되기 때문에 성능 차이가 좁아 질 것이라고 생각했지만 많이 변경되지 않았습니다. getElementsByClassName('.selector')
은 모두 자체적으로 호출되며 jQuery('.selector')
보다 빠릅니다.
jQuery는 클래스 이름이 아니라 선택기를 사용합니다. 클래스 선택기를 전달하면 먼저 ** 클래스 선택기임을 확인해야합니다. 시간이 필요해. – Quentin