본문으로 바로가기
COMMUNITY모든 이야기

std::vector에 대량의 데이터 push_back 시 성능이 갑자기 떨어지는 이유

빗방울 2026.10.30 01:09 2분 읽기 조회 5

로그 파일을 읽어서 수천만 개의 정수 데이터를 vector에 저장해 분석하려고 합니다. 그런데 데이터 양이 많아질수록 삽입 속도가 눈에 띄게 느려져서 원인을 찾고 있습니다.

코드:

#include <iostream>
#include <vector>
#include <chrono>

int main() {
    std::vector<int> data;
    auto start = std::chrono::high_resolution_clock::now();
    for (int i = 0; i < 50000000; ++i) {
        data.push_back(i);
    }
    auto end = std::chrono::high_resolution_clock::now();
    std::chrono::duration<double> diff = end - start;
    std::cout << "Time: " << diff.count() << "s" << std::endl;
    return 0;
}

오류: 특정 데이터 개수(약 1,000만 개)를 넘어가는 시점부터 push_back 한 번에 걸리는 시간이 불규칙하게 튀면서 전체 실행 시간이 예상보다 훨씬 길어집니다.

시도: 컴파일러 최적화 옵션을 -O3로 설정해 보았고, 다른 데이터 타입(long long)으로 바꿔보았지만 증상이 비슷합니다.

질문: vector의 내부 동작 방식 때문에 발생하는 성능 저하가 맞는지, 이 상황에서 성능을 개선하려면 어떻게 해야 하는지 궁금합니다.

모든 이야기1447

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1447개의 이야기
댓글