源码

首页 » 归档 » 源码 » c – 为什么在循环8192个元素时我的程序会…

c – 为什么在循环8192个元素时我的程序会…


以下是相关程序的摘录.矩阵img [] []的大小为SIZE×SIZE,并初始化为:

img [j] [i] = 2 * j i

然后,你创建一个矩阵res [] [],这里的每个字段都是img矩阵中它周围的9个字段的平均值.为简单起见,边框保留为0.

for(i=1;i

这就是该计划的全部内容.为了完整起见,以下是之前的内容.没有代码.如您所见,它只是初始化.

#define SIZE 8192
float img[SIZE][SIZE]; // input image
float res[SIZE][SIZE]; //result of mean filter
int i,j,k,l;
for(i=0;i

基本上,当SIZE是2048的倍数时,该程序很慢,例如,执行时间:

SIZE = 8191: 3.44 secs
SIZE = 8192: 7.20 secs
SIZE = 8193: 3.18 secs

编译器是GCC.
据我所知,这是因为内存管理,但我对这个主题并不太了解,这就是我在这里问的原因.

另外如何解决这个问题会很好,但如果有人能解释这些执行时间,我已经足够开心了.

我已经知道malloc / free了,但问题不在于使用的内存量,它只是执行时间,所以我不知道这会有多大帮助.

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/c-weishenmezaixunhuan8192geyuansushiwodechengxuhui.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9 月 19, 2019 at 07:00 上午

热评文章