我是一个有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:
我正在研究新的chrono库(C++11),并尝试使用它。我编写了以下两个程序:
vector.cpp
#include <iostream>
#include <vector>
#include <chrono>
int main()
{
std::vector<double> vector(1000000, 0.);
auto start = std::chrono::high_resolution_clock::now();
for(int i(0); i < vector.size(); i++)
{
vector[i] += 1.;
}
auto end = std::chrono::high_resolution_clock::now();
std::cout << "Elapsed time: " << std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count() << " milliseconds" << std::endl;
return 0;
}
array.cpp
#include <iostream>
#include <array>
#include <algorithm>
#include <chrono>
int main()
{
std::array<double, 1000000> array;
std::fill(array.begin(), array.end(), 0.);
auto start = std::chrono::high_resolution_clock::now();
for(int i(0); i < array.size(); i++)
{
array[i] += 1.;
}
auto end = std::chrono::high_resolution_clock::now();
std::cout << "Elapsed time: " << std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count() << " milliseconds" << std::endl;
return 0;
}
对于数组程序,我获得了9毫秒的执行时间,而对于向量程序,我获得了12毫秒。 std::vector 的速度似乎比 std::array 慢大约33%。 我做得对吗?为什么会有这种差异?
附:我正在使用GCC 4.7和Mac OS X 10.7。
g++-mp-4.7 -std=c++11 vector.cpp -o vector
g++-mp-4.7 -std=c++11 array.cpp -o array
for(int i(0), iMax( vector.size() ); i < iMax; i++)
。 - Ylisarstd::fill
来将数组清零,您可以像这样初始化它:std::array<double, 1000000> array{}
。 - juanchopanza