在g ++ 4.7和g ++ 4.8.2下使用零初始化原子编译下面需要数小时.默认初始化的原子和零初始化的非原子编译立即.
#include <iostream>
#include <array>
#include <algorithm>
#include <atomic>
int main(int argc, char* argv[]) {
//std::array<std::atomic<int>, 1000000> arr; // default initialization (i.e., random data) = FAST
//std::array<int, 1000000> arr={{}}; // zero init non-atomic = FAST
//std::array<std::atomic<int>, 1000000> arr{{}}; // zero initialization = FOREVER
//std::array<std::atomic<int>, 1000000> arr={{}}; // zero init via assignment = FOREVER
std::array<std::atomic<int>, 1000000> arr{}; // zero initialization = FOREVER
std::cerr << "sum = " << std::accumulate(arr.begin(), arr.end(), 0) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
g++ -std=c++11 array.cpp …