if (populateSmallTime < aggregateSmallTime) { console.log(`populate is faster for ${smallTestSize} documents.`); } else { console.log(`aggregate is faster for ${smallTestSize} documents.`); }
// Large test console.log(`Testing with ${largeTestSize} documents...`);
if (populateLargeTime < aggregateLargeTime) { console.log(`populate is faster for ${largeTestSize} documents.`); } else { console.log(`aggregate is faster for ${largeTestSize} documents.`); }
Testing with 10 documents... Testing populate with 10 documents... populate with 10 documents: 12.616999864578247 ms Testing aggregate with 10 documents... aggregate with 10 documents: 3.547708034515381 ms aggregate is faster for 10 documents. Testing with 500000 documents... Testing populate with 500000 documents... populate with 500000 documents: 6424.865000009537 ms Testing aggregate with 500000 documents... aggregate with 500000 documents: 10192.34625005722 ms populate is faster for 500000 documents.
작은 데이터셋 (10 documents)
populate 실행 시간: 12.62 ms
aggregate 실행 시간: 3.55 ms
결론: 작은 데이터셋에서는 aggregate가 더 빠르다.
큰 데이터셋 (500,000 documents)
populate 실행 시간: 6424.87 ms
aggregate 실행 시간: 10192.35 ms
결론: 큰 데이터셋에서는 populate가 더 빠르다.
결론
위의 성능 테스트 결과를 토대로 아래와 같은 결론을 도출했습니다.
작은 데이터셋에서는 aggregate가 더 빠르다.
큰 데이터셋에서는 populate가 더 빠르다.
따라서, 데이터셋의 크기와 데이터베이스 구조를 고려하여 적절한 방법을 선택하는 것이 중요합니다. 이 블로그는 기술블로그마다 populate가 빠르다 또는 aggregate가 빠르다라는 게시글을 보고 의문이 들어서 직접 테스트해보았습니다. MongoDB 버전이나 Mongoose 버전에 따라 결과가 달라질 수 있으니 참고하시기 바랍니다. 위 코드는 GitHub에 올려두었습니다. GitHub에서 확인하실 수 있습니다.