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

C# में Stopwatch क्लास से बीता समय मापना


C# में System.Diagnostics.Stopwatch क्लास उच्च-रिज़ॉल्यूशन (high-resolution) समय मापने के लिए उपयोग की जाती है। यह कोड निष्पादन समय, बेंचमार्किंग, और प्रदर्शन विश्लेषण के लिए आदर्श है।

उदाहरण: बुनियादी उपयोग

using System;
using System.Diagnostics;

public class Demo
{
    public static void Main()
    {
        // स्टॉपवॉच बनाएं और शुरू करें
        var sw = Stopwatch.StartNew();
        
        // कुछ ऑपरेशन करें (यहां सिर्फ टिक्स पढ़ रहे हैं)
        long ticks = sw.ElapsedTicks;
        
        Console.WriteLine($"बीते टिक्स: {ticks}");
        Console.WriteLine($"बीता समय: {sw.Elapsed}");
        Console.WriteLine($"बीते मिलीसेकंड: {sw.ElapsedMilliseconds}");
    }
}

आउटपुट

बीते टिक्स: 582
बीता समय: 00:00:00.0000582
बीते मिलीसेकंड: 0

व्यावहारिक उदाहरण: मेथड निष्पादन समय मापना

using System;
using System.Diagnostics;

public class Demo
{
    public static void Main()
    {
        // कोड ब्लॉक का समय मापें
        var sw = Stopwatch.StartNew();
        
        // मापा जाने वाला कोड
        int sum = 0;
        for (int i = 0; i < 1000000; i++)
        {
            sum += i;
        }
        
        sw.Stop(); // रोकें
        
        Console.WriteLine($"लूप निष्पादन समय: {sw.ElapsedMilliseconds} ms");
        Console.WriteLine($"बीता समय: {sw.Elapsed}");
        Console.WriteLine($"परिणाम: {sum}");
    }
}

आउटपुट

लूप निष्पादन समय: 2 ms
बीता समय: 00:00:00.0021453
परिणाम: 499999500000

Stopwatch के मुख्य सदस्य

सदस्यप्रकारविवरण
StartNew()स्थैतिक मेथडनया स्टॉपवॉच बनाता है और शुरू करता है
Start()इंस्टेंस मेथडमाप शुरू/जारी रखता है
Stop()इंस्टेंस मेथडमाप रोकता है
Reset()इंस्टेंस मेथडसमय शून्य करता है, रोकता है
Restart()इंस्टेंस मेथडरीसेट करता है और शुरू करता है
Elapsedप्रॉपर्टीTimeSpan के रूप में बीता समय
ElapsedMillisecondsप्रॉपर्टीlong कुल मिलीसेकंड
ElapsedTicksप्रॉपर्टीlong कुल टिक्स
IsRunningप्रॉपर्टीbool चल रहा है या नहीं
Frequencyस्थैतिक प्रॉपर्टीप्रति सेकंड टिक्स (हार्डवेयर-निर्भर)
IsHighResolutionस्थैतिक प्रॉपर्टीbool हाई-रिज़ॉल्यूशन समर्थन

उन्नत उदाहरण: Frequency और टिक्स

using System;
using System.Diagnostics;

public class Demo
{
    public static void Main()
    {
        Console.WriteLine($"हाई रिज़ॉल्यूशन: {Stopwatch.IsHighResolution}");
        Console.WriteLine($"फ्रीक्वेंसी: {Stopwatch.Frequency:N0} टिक्स/सेकंड");
        Console.WriteLine($"टिक अवधि: {1.0 / Stopwatch.Frequency * 1_000_000_000:F3} नैनोसेकंड");
        
        var sw = Stopwatch.StartNew();
        System.Threading.Thread.Sleep(100);
        sw.Stop();
        
        // मैन्युअल गणना
        double milliseconds = (double)sw.ElapsedTicks / Stopwatch.Frequency * 1000;
        Console.WriteLine($"\nमैन्युअल गणना: {milliseconds:F2} ms");
        Console.WriteLine($"ElapsedMilliseconds: {sw.ElapsedMilliseconds} ms");
    }
}

आउटपुट

हाई रिज़ॉल्यूशन: True
फ्रीक्वेंसी: 2,533,333 टिक्स/सेकंड
टिक अवधि: 394.737 नैनोसेकंड

मैन्युअल गणना: 100.12 ms
ElapsedMilliseconds: 100 ms

महत्वपूर्ण बिंदु

  • Stopwatch DateTime.Now से बहुत अधिक सटीक है
  • Frequency हार्डवेयर-निर्भर है (आमतौर पर 2-3 मिलियन टिक्स/सेकंड)
  • IsHighResolution true होने पर हार्डवेयर हाई-रिज़ॉल्यूशन काउंटर का उपयोग करता है
  • बेंचमार्किंग के लिए BenchmarkDotNet लाइब्रेरी अधिक उन्नत विकल्प प्रदान करती है
  • बहुत छोटे ऑपरेशन्स के लिए कई बार चलाकर औसत लें
  1. C# में Console क्लास C# में Console क्लास

    C# में Console क्लास का उपयोग कंसोल एप्लिकेशन के लिए मानक इनपुट, आउटपुट और त्रुटि स्ट्रीम को दर्शाने के लिए किया जाता है। आइए C# में Console क्लास प्रॉपर्टीज के कुछ उदाहरण देखते हैं: Console.CursorLeft प्रॉपर्टी C# में कंसोल का CursorLeft बदलने के लिए Console.CursorLeft प्रॉपर्टी का उपयोग करें। उदा

  1. - C# में टाइमर (Timer)

    टाइमर सेट करने के लिए उपयोग किया जाने वाला नेमस्पेस System.Timers है। Timer क्लास एक सेट अंतराल के बाद एक इवेंट उत्पन्न करती है, जिसमें आवर्ती इवेंट उत्पन्न करने का विकल्प होता है।सबसे पहले, 5 सेकंड अंतराल के लिए एक टाइमर ऑब्जेक्ट बनाएं:timer = new System.Timers.Timer(5000);टाइमर के लिए इलैप्स्ड इवे

  1. - C# में क्लास: परिभाषा, संरचना और उदाहरण

    C# में क्लास एक डेटा टाइप का ब्लूप्रिंट (खाका) होता है। यह ऑब्जेक्ट्स बनाने के लिए एक टेम्पलेट की तरह काम करता है। क्लास के अंदर परिभाषित वेरिएबल्स (फील्ड्स) और मेथड्स (फंक्शन्स) को मिलाकर क्लास के मेंबर्स कहा जाता है। क्लास का सामान्य सिंटैक्स C# में क्लास घोषित करने का सामान्य रूप निम्नलिखित है: