问题很简单。对于 C++ 中的这一行,
std::vector<std::vector<double>> x_vec(10, std::vector<double>(2));
我创建一个大小为 (10, 2) 的向量来赋值。
我发现这个单一操作导致我大约 1 微秒。
我有一个函数,其中有几个可以创建多个向量。单一功能评估的时间对于我的程序至关重要。
我发现创建这个向量比为其赋值更昂贵。
如何减少这方面的时间?我没有义务矢量。数组等对于我的情况同样适用。
如果您需要的内存大小如您所显示的行所示提前已知,那么在堆栈上分配固定大小的双精度数组比让 std::vector 在堆上分配会更快。但是,如果您不在每次调用函数时一遍又一遍地分配内存,而是重用已分配的内存并用新值覆盖它,则可以充分利用函数的性能。