logo

كرونو في C++

هو رأس C++ يوفر مجموعة من الأنواع والوظائف للعمل مع الوقت. إنها جزء من مكتبة النماذج القياسية C++ (STL) وهي مضمنة في C++ 11 والإصدارات الأحدث.

يوفر ثلاثة أنواع رئيسية من الساعات: ساعة النظام الثابتة وساعة الدقة العالية. تُستخدم هذه الساعات لقياس الوقت بطرق مختلفة.

يمثل system_clock ساعة الحائط في الوقت الفعلي على مستوى النظام. يتأثر بتعديلات وقت النظام.
تمثل Steady_clock ساعة متزايدة بشكل رتيب ولا تتأثر بالتغييرات التي تطرأ على وقت النظام.
High_resolution_clock هي الساعة ذات أقصر فترة زمنية متاحة على النظام.



مثال على نظام التشغيل مفتوح المصدر هو

يوفر أيضًا مجموعة من أنواع المدة بما في ذلك المدةالتي يمكن استخدامها لتمثيل مدة من الزمن. Rep هو نوع التمثيل (مثل int أو long) والفترة هي نسبة المدة (مثل النانو ثانية أو الثواني).
بالإضافة إلى ذلكيوفر مجموعة من أنواع النقاط الزمنية بما في ذلك time_pointوالتي يمكن استخدامها لتمثيل نقطة زمنية. الساعة هي نوع الساعة (مثل system_clock) وDuration هي نوع المدة (مثل الثواني)

تُستخدم مكتبة Chrono للتعامل مع التاريخ والوقت. تم تصميم هذه المكتبة للتعامل مع حقيقة أن أجهزة ضبط الوقت والساعات قد تكون مختلفة على أنظمة مختلفة وبالتالي تحسين الدقة بمرور الوقت. الشيء الفريد في chrono هو أنه يوفر مفهوم محايد الدقة من خلال فصل المدة والنقطة الزمنية (النقطة الزمنية) عن ساعات محددة. chrono هو اسم الرأس وأيضًا اسم مساحة الاسم الفرعية: جميع العناصر الموجودة في هذا الرأس (باستثناء تخصصات النوع الشائع) لم يتم تعريفها مباشرة ضمن مساحة الاسم std (مثل معظم المكتبات القياسية) ولكن تحت std::مساحة الاسم كرونو . العناصر الموجودة في هذا الرأس تتعامل مع الوقت. ويتم ذلك بشكل رئيسي من خلال ثلاثة مفاهيم:

مدة

يعبر كائن المدة عن فترة زمنية عن طريق حساب مثل دقيقة وساعتين أو عشرة مللي ثانية. على سبيل المثال، يمكن تمثيل "42 ثانية" بمدة تتكون من 42 علامة لوحدة زمنية مدتها ثانية واحدة. 

CPP
// C++ program to illustrate the utility  // function duration::count #include     #include   int main () {  using namespace std::chrono;  // std::chrono::milliseconds is an   // instantiation of std::chrono::duration:- 1 second  milliseconds mil(1000);     mil = mil*60;    std::cout << "duration (in periods): ";  std::cout << mil.count() << " milliseconds.n";    std::cout << "duration (in seconds): ";  std::cout << (mil.count() * milliseconds::period::num /   milliseconds::period::den);  std::cout << " seconds.n";  return 0; } 

الإخراج:

duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds.

ساعة

أمر سيد

تتكون الساعة من نقطة البداية (أو العصر) ومعدل القراد. على سبيل المثال، قد تحتوي الساعة على حقبة 22 فبراير 1996 وتحدد كل ثانية. تحدد لغة C++ ثلاثة أنواع من الساعات:

    system_clock- هو الوقت الحالي حسب النظام (الساعة العادية التي نراها على شريط أدوات الكمبيوتر). هو مكتوب باسم- std::chrono::system_clockثابت_الساعة-إنها ساعة رتيبة لا يمكن تعديلها أبدًا، فهي تسير بمعدل منتظم. هو مكتوب كـ- std::chrono::steady_clockHigh_resolution_clock- يوفر أصغر فترة زمنية ممكنة. هو مكتوب كـ-std::chrono::high_resolution_clock

نقطة زمنية

يعبر كائن time_point عن نقطة زمنية تتعلق بعصر الساعة. داخليًا، يقوم الكائن بتخزين كائن من نوع المدة ويستخدم نوع الساعة كمرجع لعصره.  

CPP
// C++ program to illustrate time point // and system clock functions #include    #include  #include  // Function to calculate // Fibonacci series long fibonacci(unsigned n) {  if (n < 2) return n;  return fibonacci(n-1) + fibonacci(n-2); } int main() {  // Using time point and system_clock  std::chrono::time_point<std::chrono::system_clock> start end;  start = std::chrono::system_clock::now();  std::cout << "f(42) = " << fibonacci(42) << 'n';  end = std::chrono::system_clock::now();  std::chrono::duration<double> elapsed_seconds = end - start;  std::time_t end_time = std::chrono::system_clock::to_time_t(end);  std::cout << "finished computation at " << std::ctime(&end_time)  << "elapsed time: " << elapsed_seconds.count() << "sn"; } 

الإخراج:

f(42) = 267914296 finished computation at Wed Jan 4 05:13:48 2017 elapsed time: 2.14538s

من المهم ملاحظة أن الدقة والدقة في الساعات والمدد التي توفرهاقد تختلف تبعًا للنظام والنظام الأساسي، ومن الجيد دائمًا التحقق من وثائق النظام الأساسي الخاص بك للحصول على مزيد من المعلومات.

jsp

إنشاء اختبار