0
我注意到我的代码有些奇怪,以及它声明和初始化我的二维矩阵所用的时间。2D矩阵声明差异
第一种方式:
vector< vector<double> > gblStiff(dOF, vector<double>(dOF, 0));
自由度是在代码前面的一些确定的值。当dOF = 30000时,第一种方法大约需要3秒钟!
方式二:
double** gblStiff = new double*[dOF];
for (i=0; i < dOF; i++)
gblStiff[i] = new double[dOF];
这第二种方式需要0.063秒为同一DOF !!
任何人都可以阐明为什么会发生这种情况?我非常好奇。
单个连续缓冲区会更快。使用'gblStiff [dOF * row + col]'将其索引(或相反,取决于您的存储顺序和索引定义)。 – Peter