double **array = new double* [X];
for (int i=0; i<X; i++)
array[i] = new double [Y];
array[x][y] = n;或
double *array = new double [X*Y];
array[x*Y+y] = n;第二个版本创建得更快,但是access在第一个版本中速度更快(例如,使用卷积进行图像处理),不是吗?或者这一切都可以忽略不计?
发布于 2013-12-15 18:51:12
理论上,第二个版本应该更快,因为整个数组都是连续分配的,因此它比第一个版本更适合缓存。
但是在实践中,分析它,看看会发生什么。这种性能问题在很大程度上取决于您的体系结构、操作系统等。
我在这里的建议(除了分析)是:考虑使用标准容器(在本例中是),这些容器已经过了分析、测试,并且使您的生活更容易脱离原始指针和手动内存管理。
发布于 2013-12-15 18:54:45
好的,我有: 1000x1000图像与传统的傅里叶变换实现的双阵列: Windows 7 Pro 64位,VC++ 2010快递->完全相同(2:11分钟)!
https://stackoverflow.com/questions/20598062
复制相似问题