normal for loop এবং enhanced for loop এর মধ্যে কোনটি বেশি efficient?

asked 09 Mar '16, 15:51

Emranul%20haque%20Rakib's gravatar image

Emranul haque Rakib
33915


তুমি STACK OVERFLOW এর এই আরটিকেল টা পড়তে পার। এইখানে অনেক ভাল্ভাবে আন্স দেওয়া আছে।ঃ) http://stackoverflow.com/questions/11555418/why-is-enhanced-for-loop-efficient-than-normal-for-loop\ এইখানে কোড সহ বিস্তারিত আলোচনা করা আছে http://www.coderanch.com/t/258147/java-programmer-OCPJP/certification/Enhanced-Loop-Loop

permanent link

answered 09 Mar '16, 16:48

Zahirul_Islam_Monir's gravatar image

Zahirul_Islam_Monir
2039

edited 09 Mar '16, 17:03

1

ইংরেজি বুঝি না, বাংলায় ট্রান্সলেট কইরা দেন

(09 Mar '16, 17:02) _Shaon_

এনহ্যান্সড ফর লুপ লেখতে সহজ, কিন্তু সামান্য একটু সময় বেশি লাগে, যেটা আসলে ইগ্নোরেবল।

তবে অ্যাড্রেস ব্যবহার করলে আবার এটা নরমাল ফর লুপের চেয়ে ভালো কাজ করে। কিন্তু ভালোর পরিমাণটাও খুবই সামান্য, অর্থাৎ এটিও ইগ্নোরেবল।

আমি সি++ কোড দিয়ে কোডে তুলনাটা দেখালাম, এমন কোড জাভাতে লিখে আপনি টাইম মেজারমেন্ট করে নিজেই দেখতে পারেন কোনটা ইফিসিয়েন্ট। তবে আমি যতটুকু জানি, জাভাতে ইটারেটর ব্যবহার করা হয়, যা অনেকটা এনহ্যান্সড ফর লুপে অ্যাড্রেসিং ব্যবহার করার মতই ইফিসিয়েন্ট কাজ করে।

ধন্যবাদ।

কোডঃ

#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);

#define sz 10000005

using namespace std;

int arr[sz];

int main()
{
    _
    int cas = 1,t,n,m,x,y,z;
    n = 45;
    m = 37;
    FILE *file = fopen("test1.txt", "w");

    for (int i = 0; i<sz; i++)
    {
        n = 2*n - m - 90;
        m = -n;
        arr[i] = n+m;
    }


    clock_t begin, end;
    double time_spent;
    begin = clock();

    for(int i = 0; i<sz; i++)
        fprintf(file, "%d\n", arr[i]);

    end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    cerr<<"Normal for loop Time spent = "<<time_spent<<endl;

    fclose(file);


    file = fopen("test2.txt", "w");


    begin = clock();

    for(int i :arr)
        fprintf(file, "%d\n", i);

    end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    cerr<<"Enhanced for loop Time spent = "<<time_spent<<endl;

    fclose(file);

    file = fopen("test3.txt", "w");

    begin = clock();

    for(int &i :arr)
        fprintf(file, "%d\n", i);

    end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
    cerr<<"Enhanced for loop using address Time spent = "<<time_spent<<endl;

    fclose(file);

   return 0;
}

আউটপুটঃ

Normal for loop Time spent = 17.796
Enhanced for loop Time spent = 17.026
Enhanced for loop using address Time spent = 16.977
permanent link

answered 10 Mar '16, 01:34

manetsus's gravatar image

manetsus
2.2k211

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×210

question asked: 09 Mar '16, 15:51

question was seen: 671 times

last updated: 10 Mar '16, 01:34