[Javascript] 집합과 배열의 성능

6432 단어 setarrayjavascript
이번주 회사에서 리뷰를 기록하는 기술 블로그로 쓰기 때마침 좋은 주제가 종양.

개체의 속성 값이 겹겹이 쌓이고 있는 부분을 짚고, 내가 생태학적으로 연구할 수 있다.
  • 배열에 해당하는 속성 값을 참조 자료

  • lodash_.uniq() 로 Array에서 중복 값 제외
  • 객체와 Array의 길이 비교(length가 구분면 중복 값이 ​​존재함)

  • 리뷰할 수 있는 동료분께서 중복값을 확인하려면 설정을 써도 되지 않을 수도 있습니다. Set 을 안쓰고 측면 기억 저편에 있었다😅

    설정을 사용하는 경우 논리:


  • Set에 해당 속성 값을 가져오려면 (Set은 고유한 값만 저장됨)
  • object와 Array의 길이 비교

  • 배열과 가장 큰 차이는 중복값을 확인하는 코드가 필요없다는 것!!!
    PCB 문득 어레이와 세트의 성능이 떨어져서 차이가 나지 않게 되었습니다.

    배열을 사용하는 경우:

    let isDuplicate: boolean = false;
    const names: string[] = [];
    
    console.time('use Array');
    
    _.forEach(result, (item) => {
      names.push(item.name);
    });
    
    if (result.length !== _.uniq(names).length) {
      isDuplicate = true;
    }
    
    console.timeEnd('use Array');
    




    설정을 사용하는 경우:

    let isDuplicate: boolean = false;
    const names: Set<string[]> = new Set();
    
    console.time('use Set');
    
    _.forEach(result, (item) => {
      names.add(item.name);
    });
    
    if (result.length !== names.size) {
      isDuplicate = true;
    }
    
    console.timeEnd('use Set');
    





    데이터의 수가 100개 미만인 지금 상황과 같은 경우, Set이 배열보다 약 0.01ms 정도 빨랐다.
    현재의 코드는 거의 차이가 없는 것이 이긴다.

    라면 데이터가 1k, 10k 보수라면?



    정렬
    세트


    1k



    10k



    10만




    1,000개까지는 눈에 띄지 않지만, 10만개 이상의 많은 데이터 경우에는 38ms 정도 차이가 난다. 이 땐, 세트를 사용하는 것이 퍼포먼스 측면으로는 더 나아지고 볼 수 있습니다.

    ❗️이건 어레이의 push + lodash _.uniq() + Array.lengthSet의 add + Set.size 조합을 비교한 경우이기 때문에,
    데이터 삭제, 인덱스 추출 등 Array와 Set의 퍼포먼스는 각각 다를 수 있다.

    현재 해당 기능의 로직상 10만 개 이상 데이터가 옅은 경우는 거의 없지만, 코드의 가독성 측면에서 세트를 사용하는 게 더 낫고 결론이 났었습니다.😌😌

    잊고 있던 세트를 다시 말했다고, Array와 세트를 오래도록 작성하기 위해 이번 코드 리뷰를 작성했다. 매일 학습 축제와 성장할 기회가 정상은 개발자라는 내 직업이 너무 행복함을 다시 한 번 채워줍니다🥰

    좋은 웹페이지 즐겨찾기