Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में Foreach और Parallel.Foreach में क्या अंतर है?


C# में Foreach लूप एक ही थ्रेड पर चलता है और प्रसंस्करण क्रमिक रूप से एक-एक करके होता है। जबकि C# में Parallel.Foreach लूप कई थ्रेड्स पर चलता है और प्रसंस्करण समानांतर तरीके से होता है। जिसका अर्थ है कि यह पिछले आइटम के पूरा होने की प्रतीक्षा किए बिना एक बार में सभी आइटम्स के माध्यम से लूप करता है।

Parallel.Foreach का निष्पादन सामान्य ForEach से तेज़ है। Parallel.ForEach लूप का उपयोग करने के लिए हमें System.Threading.Tasks नेमस्पेस आयात करने की आवश्यकता है।

उदाहरण

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Threading; 
using System.Threading.Tasks; 
namespace DemoApplication{ 
    class Demo{ 
        static void Main(string[] args){ 
            var animals = new List<string>{ 
                "cat", "rat", "deer", "elephant", "lion", "tiger", "dog", "pig", "buffalo", "rabbit", "horse", "cheetah", "cow", "goat", "sheep", "donkey", "zebra", "wolf", "fox", "lepoard", "monkey", "kangaroo", "girafee", "hippo" 
            }; 
            var stopWatch = Stopwatch.StartNew(); 
            foreach (string animal in animals){ 
                Console.WriteLine($"Fruit Name: {animal}, Thread Id={Thread.CurrentThread.ManagedThreadId}"); 
            } 
            Console.WriteLine($"foreach loop execution time = {stopWatch.Elapsed.TotalSeconds} seconds"); 
            var stopWatch2 = Stopwatch.StartNew(); 
            Parallel.ForEach(animals, animal =>{ 
                Console.WriteLine($"Fruit Name: {animal}, Thread Id={Thread.CurrentThread.ManagedThreadId}"); 
            }); 
            Console.WriteLine($"Parallel foreach loop execution time = {stopWatch2.Elapsed.TotalSeconds} seconds"); 
            Console.ReadLine(); 
        } 
    } 
}

आउटपुट

उपरोक्त कोड का आउटपुट है

Fruit Name: cat, Thread Id= 1 
Fruit Name: rat, Thread Id= 1 
... (सभी क्रमिक थ्रेड 1 पर) 
foreach loop execution time = 0.0129221 seconds 
Fruit Name: cat, Thread Id= 1 
Fruit Name: rat, Thread Id= 1 
Fruit Name: deer, Thread Id= 1 
Fruit Name: elephant, Thread Id= 1 
Fruit Name: lion, Thread Id= 1 
Fruit Name: tiger, Thread Id= 1 
Fruit Name: dog, Thread Id= 1 
Fruit Name: pig, Thread Id= 1 
Fruit Name: buffalo, Thread Id= 1 
Fruit Name: sheep, Thread Id= 3 
Fruit Name: donkey, Thread Id= 3 
Fruit Name: rabbit, Thread Id= 1 
Fruit Name: goat, Thread Id= 5 
Fruit Name: fox, Thread Id= 5 
Fruit Name: lepoard, Thread Id= 5 
Fruit Name: cow, Thread Id= 4 
Fruit Name: hippo, Thread Id= 4 
Fruit Name: kangaroo, Thread Id= 9 
Fruit Name: girafee, Thread Id= 6 
Fruit Name: monkey, Thread Id= 5 
Fruit Name: horse, Thread Id= 1 
Fruit Name: cheetah, Thread Id= 1 
Fruit Name: zebra, Thread Id= 3 
Fruit Name: wolf, Thread Id= 3 
Parallel foreach loop execution time = 0.0092988 seconds

उपरोक्त परिणाम से हम देख सकते हैं, Parallel.Foreach विभिन्न थ्रेड्स में निष्पादित होता है और सामान्य foreach की तुलना में कम समय लेता है।


  1. डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है? डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है?

    डायरेक्टएक्स एपीआई का एक संग्रह है, या एप्लिकेशन प्रोग्रामिंग इंटरफेस, जिसका उपयोग सॉफ्टवेयर द्वारा मल्टीमीडिया सामग्री को रेंडर करने और ग्राफिकल हार्डवेयर के साथ संचार करने के लिए किया जाता है। डायरेक्टएक्स का प्रमुख घटक एपीआई, डायरेक्ट3डी, सॉफ्टवेयर और ग्राफिक्स हार्डवेयर के बीच संचार को संभालता ह

  1. - C# में String और string में क्या अंतर है?

    String का मतलब System.String है जबकि string C# में System.String के लिए एक एलियास (alias) है।उदाहरण के लिए:string str = Welcome!;यह आवश्यक नहीं है, लेकिन आमतौर पर String का उपयोग तब किया जाता है जब आप क्लासेस के साथ काम करते हैं।string str = String.Format(Welcome! {0}!, user);चूंकि string System.Str

  1. - C# में लिस्ट और ऐरे में क्या अंतर है?

    एक ऐरे एक ही प्रकार के एलिमेंट्स के निश्चित आकार के अनुक्रमिक संग्रह को स्टोर करता है, जबकि लिस्ट एक जेनेरिक कलेक्शन है।लिस्ट को परिभाषित करने के लिए:List myList = new List();लिस्ट में एलिमेंट्स सेट करने के लिए, आपको Add मेथड का उपयोग करना होगा:myList.Add(Audi); myList.Add(BMW); myList.Add(Chevrolet