मैं सामान्य रूप से स्टॉपवॉच का उपयोग करें, लेकिन मैं यह भी पी का इस्तेमाल किया है/kernel32.dll को आह्वान:
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long lpFrequency);
मैं) दो तरीकों प्रारंभ() और बंद करो (कहा जाता है:
public void Start()
{
Thread.Sleep(0);
QueryPerformanceCounter(out startTime);
}
public void Stop()
{
QueryPerformanceCounter(out stopTime);
}
करने के लिए कॉल के बीच की अवधि को क्वेरी शुरू करने के लिए() और बंद करो():
public double Duration
{
get
{
return (double)(stopTime - startTime)*1000/(double)freq;
}
}
ध्यान दें कि freq
में निर्धारित किया जाता है निर्माता:
public PerformanceTimer()
{
startTime = 0;
stopTime = 0;
if (QueryPerformanceFrequency(out freq) == false)
{
// not supported
throw new Win32Exception();
}
}
मेरी जरूरतों के लिए, मैं बहुत अधिक अंतर नहीं दिखाई दी, हालांकि मैं सुझाव है कि आप दोनों क्या आप सूट देखने के लिए प्रयास करें।
संपादित करें: मैं original code from MSDN का पता लगाने में सक्षम था। ऐसा लगता है कि नेट 1.1 के बाद से कुछ सुधार किए गए हैं। ले-होम संदेश यह है कि माइक्रोसॉफ्ट दावों दावा करता है कि यह विधि नैनोसेकंद सटीकता प्रदान करती है।
स्रोत
2009-12-10 08:07:51
हालांकि मैं अलग-अलग कॉलों में समय को औसत नहीं देना चाहता हूं। –
आप वास्तव में और अधिक अर्थपूर्ण रूप से नहीं कर सकते हैं, क्योंकि आप समवर्ती अनुरोधों के लिए क्या रिकॉर्ड करेंगे? –