복붙노트

[JQUERY] jQuery를 가장 빠른 어린이 () 또는 발견 ()이란 무엇입니까?

JQUERY

jQuery를 가장 빠른 어린이 () 또는 발견 ()이란 무엇입니까?

해결법


  1. 1.발견 ()이 노드 아래의 전체 DOM을 통과하는 동안 아이들이 () 빨리 해당 구현을 부여해야합니다, 그래서 아이들 ()는, 노드의 직접적인 아이 본다. 아이들이 () 자바 스크립트가 브라우저에서 해석 사용하지만 그러나 발견은 (), 기본 브라우저 방법을 사용합니다. 내 실험에서 일반적인 경우에 많은 성능 차이가 없습니다.

    발견 ()이 노드 아래의 전체 DOM을 통과하는 동안 아이들이 () 빨리 해당 구현을 부여해야합니다, 그래서 아이들 ()는, 노드의 직접적인 아이 본다. 아이들이 () 자바 스크립트가 브라우저에서 해석 사용하지만 그러나 발견은 (), 기본 브라우저 방법을 사용합니다. 내 실험에서 일반적인 경우에 많은 성능 차이가 없습니다.

    사용 만 즉 바로 자손이나 DOM이 한 아래의 모든 노드를 고려할지 여부에 따라 어느, 당신이 원하는 결과, 방법이 아닌 속도에 따라 적절한 방법을 선택합니다. 성능이 정말 문제가 있다면, 최선의 해결책을 발견하고 그것을 사용하는 실험 (또는 여기에 다른 답변에서 벤치 마크의 일부를 참조).


  2. 2.이 jsPerf 테스트는 찾기 ()가 빠르다는 것을 의미한다. 나는보다 철저한 테스트를 생성하고, 여전히 발견 () 성능이 뛰어 어린이 마치 ()를 찾습니다.

    이 jsPerf 테스트는 찾기 ()가 빠르다는 것을 의미한다. 나는보다 철저한 테스트를 생성하고, 여전히 발견 () 성능이 뛰어 어린이 마치 ()를 찾습니다.

    업데이트 :로 tvanfosson의 의견에 따라, 나는 중첩의 16 개 수준의 다른 테스트 케이스를 만들었습니다. div의의 첫 번째 레벨을 선택할 때 여전히 () 아이들을 능가하는 성능) (모든 가능한 된 div를 찾는 경우에만 느립니다 () 찾을 수 있지만 찾을 수 있습니다.

    아이들은 ()을 능가 찾기에 ()의 중첩을 통해 100 레벨과 발견을위한 약 4000 div가있을 때 () 순회를 시작한다. 그것은 초보적인 테스트 케이스,하지만 아직도 발견 ()가 빠르게 대부분의 경우 어린이 ()보다 생각합니다.

    나는 크롬 개발자 도구에서 jQuery 코드를 통해 강화와 아이들이 () 내부적으로 형제로 (), 필터 (호출하는 것으로 나타났습니다), 및 않습니다) (발견보다 몇 정규 표현식에 통과.

    찾기 ()와 자녀 () 다른 요구를 충족하지만, 경우에 어디에서 찾을 수 ()와 자녀 () 출력 같은 결과는, 내가 찾기를 사용하는 것이 좋습니다 것입니다 ().


  3. 3.다음은 실행할 수있는 성능 테스트가있는 링크입니다. 실제로 약 2 배 빠른 아이들보다 ()을 찾으십시오 ().

    다음은 실행할 수있는 성능 테스트가있는 링크입니다. 실제로 약 2 배 빠른 아이들보다 ()을 찾으십시오 ().


  4. 4.사람들은 반드시 동일한 결과를 제공하지 않습니다 찾기를 () (어린이 반면에, 당신에게 자손 노드를 얻을 것이다)에만 일치하는 당신에게 즉시 아이를 얻을 것이다.

    사람들은 반드시 동일한 결과를 제공하지 않습니다 찾기를 () (어린이 반면에, 당신에게 자손 노드를 얻을 것이다)에만 일치하는 당신에게 즉시 아이를 얻을 것이다.

    하나 개의 시점에서, 발견 ()이 일치 될 수있는 모든 자손 노드를 검색 한 이후 많은 느린, 그리고 단지 바로하지 어린이. 그러나 이것은 더 이상 사실입니다; 더 빨리 때문에 기본 브라우저 방법을 사용하는 것입니다 () 찾을 수 있습니다.


  5. 5.다른 답변 중에 만 부모 요소의 직접적인 아이를 검색 ( ">")를 .children를 사용하는 경우 () 또는 .find 처리하지 않습니다. 그래서 나는 아이들을 구별하는 세 가지 방법을 사용하여 찾을 수있는 jsPerf 테스트를 만들었습니다.

    다른 답변 중에 만 부모 요소의 직접적인 아이를 검색 ( ">")를 .children를 사용하는 경우 () 또는 .find 처리하지 않습니다. 그래서 나는 아이들을 구별하는 세 가지 방법을 사용하여 찾을 수있는 jsPerf 테스트를 만들었습니다.

    공교롭게도) 추가 ">"선택을 .find (사용하는 경우에도 많이 여전히 빠른 .children 이상 ()이다; 내 시스템, 10 배에 이렇게.

    그래서, 내 관점에서, 전혀 .children ()의 필터링 메커니즘을 사용하는 많은 이유가있을 나타나지 않습니다.


  6. 6.단순화하기 위해 :

    단순화하기 위해 :

  7. from https://stackoverflow.com/questions/648004/what-is-fastest-children-or-find-in-jquery by cc-by-sa and MIT license