N3376 से:
20.11.7.1 [time.clock.system] / 1:
क्लास की वस्तुएं system_clock
सिस्टम-वाइड रीयलटाइम घड़ी से दीवार घड़ी समय का प्रतिनिधित्व करती हैं।
20.11.7.2 [time.clock.steady] / 1:
कक्षा की वस्तुएँ उन steady_clock
घड़ियों का प्रतिनिधित्व करती हैं जिनके लिए time_point
भौतिक समय के अग्रिमों के रूप में मूल्यों में कभी कमी नहीं होती है और जिसके time_point
लिए वास्तविक समय के सापेक्ष स्थिर दर पर अग्रिम के मूल्य होते हैं । यही है, घड़ी समायोजित नहीं हो सकती है।
20.11.7.3 [time.clock.hires] / 1:
कक्षा की वस्तुएँ high_resolution_clock
सबसे छोटी टिक अवधि के साथ घड़ियों का प्रतिनिधित्व करती हैं। high_resolution_clock
के लिए एक पर्याय हो सकता है system_clock
या steady_clock
।
उदाहरण के लिए, सिस्टम वाइड क्लॉक दिन के समय की बचत के समय जैसी किसी चीज से प्रभावित हो सकता है, जिस बिंदु पर भविष्य में कुछ बिंदु पर सूचीबद्ध वास्तविक समय वास्तव में अतीत का समय हो सकता है। (उदा। अमेरिका में, गिरने के समय में एक घंटा पीछे चला जाता है, इसलिए उसी घंटे को "दो बार" अनुभव किया जाता है) हालांकि, steady_clock
ऐसी चीजों से प्रभावित होने की अनुमति नहीं है।
इस मामले में "स्थिर" सोचने का एक और तरीका 20.11.3 [time.clock.req] / 2 की तालिका में परिभाषित आवश्यकताओं में है:
तालिका 59 में C1
और C2
घड़ी प्रकार निरूपित करें। t1
और t2
वे मान लौटाए जाते हैं C1::now()
जहाँ कॉल लौटने t1
से पहले t2
कॉलिंग वापस होती है और ये दोनों कॉल पहले होते हैं C1::time_point::max()
। [नोट: इसका मतलब यह है C1
कि चारों ओर लपेट नहीं किया t1
और t2
। ध्यान दें]
अभिव्यक्ति: C1::is_steady
रिटर्न: const bool
परिचालन शब्दार्थ: true
अगर t1 <= t2
हमेशा सच होता है और घड़ी की टिक के बीच का समय स्थिर होता है, अन्यथा false
।
यह सभी मानक उनके मतभेदों पर है।
यदि आप बेंचमार्किंग करना चाहते हैं, तो आपका सबसे अच्छा दांव शायद होने वाला है std::high_resolution_clock
, क्योंकि यह संभावना है कि आपका प्लेटफॉर्म QueryPerformanceCounter
इस घड़ी के लिए एक उच्च रिज़ॉल्यूशन टाइमर (जैसे विंडोज पर) का उपयोग करता है । हालाँकि, यदि आप बेंचमार्किंग कर रहे हैं, तो आपको वास्तव में अपने बेंचमार्क के लिए प्लेटफ़ॉर्म विशिष्ट टाइमर का उपयोग करने पर विचार करना चाहिए, क्योंकि विभिन्न प्लेटफ़ॉर्म इसे अलग तरीके से संभालते हैं। उदाहरण के लिए, कुछ प्लेटफ़ॉर्म आपको आवश्यक घड़ी की संख्या निर्धारित करने के कुछ साधन प्रदान कर सकते हैं, जिसमें आवश्यक कार्यक्रम (उसी सीपीयू पर चलने वाली अन्य प्रक्रियाओं से स्वतंत्र) शामिल हैं। बेहतर अभी तक, अपने हाथों को एक वास्तविक प्रोफाइलर पर प्राप्त करें और इसका उपयोग करें।