जो दीवार-घड़ी रिटर्न Time.now
का उपयोग करना (समय) क्योंकि बेस-लाइनों में कुछ समस्याएं हैं जिनके परिणामस्वरूप अप्रत्याशित व्यवहार हो सकता है। यह इस तथ्य के कारण होता है कि संदर्भ समय पर स्थानीय समय समायोजित करने के लिए वॉलक्लॉक समय सम्मिलित लीप-सेकंड या time slewing जैसे परिवर्तनों के अधीन है।
यदि उदा। माप के दौरान डाला गया दूसरा छलांग, यह एक सेकंड से बंद हो जाएगा। इसी प्रकार, स्थानीय सिस्टम स्थितियों के आधार पर, आपको डेलाइट-सेविंग-टाइम्स, तेज या धीमी गति से चलने वाली घड़ियों, या घड़ी को समय पर वापस कूदना पड़ सकता है, जिसके परिणामस्वरूप नकारात्मक अवधि होती है, और कई अन्य समस्याएं होती हैं।
इस समस्या का समाधान घड़ी के एक अलग समय का उपयोग करना है: एक monotonic घड़ी। दीवार घड़ी की तुलना में इस प्रकार की घड़ी में अलग-अलग गुण होते हैं। यह monitonically वृद्धि करता है, यानी कभी वापस नहीं जाता है और निरंतर दर पर बढ़ता है। इसके साथ, यह दीवार घड़ी का प्रतिनिधित्व नहीं करता है (यानी जब आप अपनी दीवार पर घड़ी से पढ़ते हैं) लेकिन एक टाइमस्टैम्प जिसे आप अंतर के लिए बाद के टाइमस्टैम्प से तुलना कर सकते हैं।
t1 = Process.clock_gettime(Process::CLOCK_MONOTONIC)
# => 63988.576809828
sleep 1.5 # do some work
t2 = Process.clock_gettime(Process::CLOCK_MONOTONIC)
# => 63990.08359163
delta = t2 - t1
# => 1.5067818019961123
delta_in_milliseconds = delta * 1000
# => 1506.7818019961123
Process.clock_gettime
विधि आंशिक सेकंड के साथ एक नाव के रूप में एक टाइमस्टैम्प रिटर्न:
रूबी में, आप इस तरह के एक टाइमस्टैम्प Process.clock_gettime(Process::CLOCK_MONOTONIC)
तरह के साथ इस प्रकार का उपयोग कर सकते हैं। लौटाई गई वास्तविक संख्या में कोई परिभाषित अर्थ नहीं है (जिसे आप भरोसा करना चाहिए)। हालांकि, आप यह सुनिश्चित कर सकते हैं कि अगली कॉल एक बड़ी संख्या लौटाएगी और मूल्यों की तुलना करके, आप वास्तविक समय अंतर प्राप्त कर सकते हैं।
ये गुण विधि को कम से कम उपयुक्त समय में विफल होने के बिना समय अंतर को मापने के लिए एक प्रमुख उम्मीदवार बनाते हैं (उदाहरण के लिए नए साल की पूर्व संध्या में आधी रात को जब एक और छलांग लगाया जाता है)।
स्रोत
2017-08-03 11:41:45
यहां फ़्लोट करने का समय अनावश्यक है। –