构建<int>大尺寸向量

Constructing vector<int> with large size

本文关键字:向量 int lt 构建 gt      更新时间:2023-10-16

我正在OS X 10.9.3、2.4 GHz Intel Core i5、8 GB DDR3 上运行以下代码

a.cpp

int main() {
  vector<int> expectation(10e8, -1.0);
  cout << "size()=" << expectation.size() << endl;
  return 0;
}

b.cpp

int main() {
  vector<int> expectation(10e9, -1.0);
  cout << "size()=" << expectation.size() << endl;
  return 0;
}

-

$ time ./a.out 
size()=1000000000
real    0m3.935s
user    0m1.530s
sys 0m2.103s
$ time ./b.out 
size()=10000000000
real    4m49.853s
user    0m16.186s
sys     0m22.966s

在b.pp中,我们有10倍大的向量
我想知道,为什么情况b的时间比情况a大大约100倍?

UPD
我找到了,在哪里我迷路了
10e8=10^9整数=4 GB
10e9=10^10ints=40 GB

假设每个int有4个字节,第一个使用4GB的内存,可以轻松地放入8GB的RAM。第二个使用40GB,需要不断交换到磁盘。那会慢得多。

注意,10e9表示10x109或1010。你可能认为这意味着109,这将适合RAM。那将是1e9