এখানে প্রশ্নযুক্ত প্রোগ্রাম থেকে নিষ্কাশন। ম্যাট্রিক্সের img[][]
সাইজ সাইজ × সাইজ রয়েছে এবং এতে আরম্ভ করা হয়েছে:
img[j][i] = 2 * j + i
তারপরে, আপনি একটি ম্যাট্রিক্স res[][]
তৈরি করেন এবং এখানকার প্রতিটি ক্ষেত্রকে img ম্যাট্রিক্সের চারপাশের 9 টি ক্ষেত্রের গড় হিসাবে গড়ে তোলা হয়। সরলতার জন্য সীমানাটি 0 এ বাকি আছে।
for(i=1;i<SIZE-1;i++)
for(j=1;j<SIZE-1;j++) {
res[j][i]=0;
for(k=-1;k<2;k++)
for(l=-1;l<2;l++)
res[j][i] += img[j+l][i+k];
res[j][i] /= 9;
}
প্রোগ্রাম এটাই আছে। সম্পূর্ণতার জন্য, এখানে আসার আগে। এর পরে কোনও কোড আসে না। আপনি দেখতে পাচ্ছেন, এটি কেবল সূচনা।
#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;i++)
for(j=0;j<SIZE;j++)
img[j][i] = (2*j+i)%8196;
মূলত, এই প্রোগ্রামটি ধীর হয় যখন SIZE 2048 এর একাধিক হয়, যেমন সম্পাদনের সময়:
SIZE = 8191: 3.44 secs
SIZE = 8192: 7.20 secs
SIZE = 8193: 3.18 secs
সংকলকটি হলেন জিসিসি। আমি যা জানি তা থেকে, এটি মেমরি পরিচালনার কারণে, তবে আমি সত্যই সেই বিষয়টি সম্পর্কে খুব বেশি জানি না, যার কারণেই আমি এখানে জিজ্ঞাসা করছি।
এছাড়াও কীভাবে এটি ঠিক করা যায় তা দুর্দান্ত হবে তবে যদি কেউ এই কার্যকর করার সময়গুলি ব্যাখ্যা করতে পারে তবে আমি ইতিমধ্যে যথেষ্ট খুশি হব।
আমি ইতিমধ্যে ম্যালোক / ফ্রি সম্পর্কে জানি, তবে সমস্যাটি ব্যবহৃত মেমরির পরিমাণ নয়, এটি কেবলমাত্র মৃত্যুদন্ডের সময়, তাই আমি জানি না কীভাবে এটি সাহায্য করবে।