构建<int>大尺寸向量
Constructing vector<int> with large size
我正在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
。
相关文章:
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- EASTL矢量<向量<int>>连续的
- 如何写向量的无序向量集,即unordered_set<向量<向量<int>>集合?
- 为什么我不能返回向量<向量<int>>(进程返回 -1073741819 (0xC0000005))
- 如何在没有循环的C++中总结向量 int 的向量
- C++:向量<向量<int>>迭代器?
- C++:在向量<int> vn{MyAllocator<int>(a)} 中调用哪些构造函数?
- 初始化一个类型向量的巨大向量<int>
- adjacent_difference算法,back_inserter向量<向量<int>>
- 如何在函数中将向量<int>v[n] 作为变速器传递?
- 将向量<int>转换为整数
- 如何正确地将向量<int>转换为空隙*并返回向量<int>?
- 有没有一种优雅的方法来读取二进制文件并将其内容复制到向量<int>
- 从<string>向量<int>中定义的索引处的向量中删除字符串
- 如何使用另一个"Eigen::VectorXd"向量中的值初始化"Eigen::VectorXd",基于索引的"向量<int>"
- 有没有办法将向量<double>*指向向量<int>?
- 如何在不复制的情况下更新 std::unordered_map<std::string, std::vector> 中的向量<int>?
- 向量的向量 int 向量
- 在向量中仅制作外部向量<向量<int>>固定
- 如何在 c++ 中将质因数向量<int >减少到映射<int,int>?