gpt4 book ai didi

c++ - 在 C++ 中加速嵌套循环

转载 作者:行者123 更新时间:2023-12-03 07:06:32 36 4
gpt4 key购买 nike

我有以下一段 C++ 代码。问题的规模是 N 和 M。在我的机器上运行代码大约需要两分钟。 (在 g++ -O3 编译之后)。无论如何在同一台机器上进一步加速它?任何一种选择,选择更好的数据结构、库、GPU 或并行性等,都在桌面上。

void demo() {
int N = 1000000;
int M=3000;
vector<vector<int> > res(M);
for (int i =0; i <N;i++) {
for (int j=1; j < M; j++){
res[j].push_back(i);
}
}
}


int main() {
demo();
return 0;
}
附加信息: for (int j=1; j < M; j++) 上方的第二个循环是真实问题的简化版本。事实上,对于每个 i(外循环), j 可能在不同的范围内,但迭代次数约为 3000。

最佳答案

使用编写此答案时显示的确切代码,您可以创建一次具有特定大小的内部 vector ,然后调用 iota 初始化它。然后只需将此 vector 传递给外部 vector 构造函数即可将其用于每个元素。
然后,您根本不需要任何显式循环,而是使用(高度优化,希望如此)标准库为您完成所有工作。
也许是这样的:

void demo()
{
static int const N = 1000000;
static int const M = 3000;

std::vector<int> data(N);
std::iota(begin(data), end(data), 0);

std::vector<std::vector<int>> res(M, data);
}

关于c++ - 在 C++ 中加速嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64586526/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com