내부 작업을위한 큰 벡터를 만드는 함수가 있습니다. 이 함수를 여러 번 호출해야 할 필요가 있다고 가정 해보십시오.C++ 여러 번 호출되는 함수의 큰 벡터
void f(int n) {
vector<int> v(n);
}
int main() {
for (int i = 0; i < 1000000; ++i) f(10000000);
}
방법 2 :
void f(int n) {
static vector<int> v;
v.reserve(99999999); // say this is the maximum possible size
v.resize(n);
}
int main() {
for (int i = 0; i < 1000000; ++i) f(10000000);
}
방법 어떻게 (요소, 성능입니다 코드의 품질 ..)
방법 1 벡터의 메모리 생성/파괴를 처리하는 가장 좋은 방법 2는 방법 1보다 확실히 빠르지 만 추한 것처럼 보입니다. 최상의 접근 방식은 무엇입니까
재미있는 점은 성능 향상을 야기하는 것이 실제로 벡터의 v (n);에서 계속 진행되어 속도가 느려지는 것입니다. 적어도 내가 생각하는 것. 첫 번째 방법에서 강제로 예약 통화가 2 번 가능할 수 있습니다. –
또한 stl 벡터에 대한 소스는 컴파일러에 따라 다릅니다. –