विभिन्न प्रोग्रामिंग कार्यों के लिए सटीक समय रखना महत्वपूर्ण है, जैसे इवेंट लॉगिंग से लेकर प्रदर्शन मापन तक। जबकि सेकंड अक्सर पर्याप्त होते हैं, कई अनुप्रयोगों को सटीक समय के लिए मिलीसेकंड परिशुद्धता की आवश्यकता होती है। यह लेख C# में इसे कैसे प्राप्त किया जाए, इस पर चर्चा करता है।
विषयवस्तु की तालिका
- C# में दिनांक और समय की मूल बातें
- C# में मिलीसेकंड के साथ कार्य करना
- व्यावहारिक उदाहरण: मिलीसेकंड प्राप्त करना
- सही विधि चुनना
C# में दिनांक और समय की मूल बातें
C# DateTime
और DateTimeOffset
संरचनाओं के माध्यम से मजबूत दिनांक और समय संचालन प्रदान करता है। ये दिनांक और समय की जानकारी में हेरफेर करने के लिए विभिन्न गुण और विधियाँ प्रदान करते हैं। हालाँकि, मिलीसेकंड तक सीधे पहुँचने के लिए इन उपकरणों की गहरी समझ की आवश्यकता होती है।
C# में मिलीसेकंड के साथ कार्य करना
मूल अवधारणा Ticks
गुण को समझने में निहित है। एक DateTime
संरचना समय में एक बिंदु का प्रतिनिधित्व करती है, और Ticks
12:00:00 मध्यरात्रि, 1 जनवरी, 0001 से 100-नैनोसेकंड अंतराल की संख्या देता है। मिलीसेकंड प्राप्त करने के लिए, हम Ticks
मान को TimeSpan.TicksPerMillisecond
(10,000) से विभाजित करते हैं।
व्यावहारिक उदाहरण: मिलीसेकंड प्राप्त करना
विधि 1: DateTime.Now.Ticks
का उपयोग करना
मिलीसेकंड में वर्तमान समय प्राप्त करने के लिए यह सबसे सरल तरीका है:
using System;
public class MillisecondsExample
{
public static void Main(string[] args)
{
long ticks = DateTime.Now.Ticks;
long milliseconds = ticks / TimeSpan.TicksPerMillisecond;
Console.WriteLine($"मिलीसेकंड में वर्तमान समय: {milliseconds}");
}
}
विधि 2: व्यतीत समय के लिए Stopwatch
का उपयोग करना
Stopwatch
वर्ग व्यतीत समय को मापने में उत्कृष्टता प्राप्त करता है, जो सीधे DateTime.Now
का उपयोग करने की तुलना में कम अवधि के लिए बेहतर परिशुद्धता प्रदान करता है। यह प्रदर्शन बेंचमार्किंग के लिए आदर्श है।
using System;
using System.Diagnostics;
public class StopwatchExample
{
public static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
// समय के लिए कोड...
System.Threading.Thread.Sleep(500); // कुछ काम का अनुकरण करें
stopwatch.Stop();
long milliseconds = stopwatch.ElapsedMilliseconds;
Console.WriteLine($"मिलीसेकंड में व्यतीत समय: {milliseconds}");
}
}
विधि 3: उच्च-रिज़ॉल्यूशन टाइमर (उन्नत आवश्यकताओं के लिए)
अत्यधिक परिशुद्धता के लिए, QueryPerformanceCounter
API पर विचार करें। हालाँकि, याद रखें कि यह प्लेटफ़ॉर्म-निर्भर है और सटीकता हार्डवेयर के आधार पर भिन्न होती है। यह आम तौर पर तब तक आवश्यक नहीं है जब तक आपको माइक्रोसेकंड या नैनोसेकंड परिशुद्धता की आवश्यकता न हो।
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
public class HighResolutionTimerExample
{
public static void Main(string[] args)
{
long frequency;
long startTime;
long endTime;
QueryPerformanceFrequency(out frequency);
QueryPerformanceCounter(out startTime);
// समय के लिए कोड...
System.Threading.Thread.Sleep(500); // कुछ काम का अनुकरण करें
QueryPerformanceCounter(out endTime);
long elapsedTicks = endTime - startTime;
double elapsedMilliseconds = (double)elapsedTicks / frequency * 1000;
Console.WriteLine($"मिलीसेकंड में व्यतीत समय: {elapsedMilliseconds}");
}
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long lpFrequency);
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
}
सही विधि चुनना
अपने एप्लिकेशन की आवश्यकताओं के लिए सबसे उपयुक्त विधि का चयन करें। अधिकांश परिदृश्यों के लिए, DateTime.Now.Ticks
या Stopwatch
पर्याप्त सटीकता प्रदान करता है। केवल तभी QueryPerformanceCounter
का उपयोग करें जब अत्यधिक परिशुद्धता (माइक्रोसेकंड या नैनोसेकंड) पूरी तरह से आवश्यक हो।