كرونو في 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     &  lt  ;  &  lt  ;     &  quot  ;  duration     (  in     periods  )  :     &  quot  ;;      std  ::  cout     &  lt  ;  &  lt  ;     mil  .  count  ()     &  lt  ;  &  lt  ;     &  quot  ;     milliseconds  .    n  &  quot  ;;          std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  duration     (  in     seconds  )  :     &  quot  ;;      std  ::  cout     &  lt  ;  &  lt  ;     (  mil  .  count  ()     *     milliseconds  ::  period  ::  num     /         milliseconds  ::  period  ::  den  );      std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;     seconds  .    n  &  quot  ;;      return     0  ;   }   

الإخراج:

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

ساعة

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

    system_clock - هو الوقت الحالي حسب النظام (الساعة العادية التي نراها على شريط أدوات الكمبيوتر). هو مكتوب باسم- std::chrono::system_clock ثابت_الساعة -إنها ساعة رتيبة لا يمكن تعديلها أبدًا، فهي تسير بمعدل منتظم. هو مكتوب كـ- std::chrono::steady_clock High_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     &  lt  ;     2  )     return     n  ;      return     fibonacci  (  n  -1  )     +     fibonacci  (  n  -2  );   }   int     main  ()   {      // Using time point and system_clock      std  ::  chrono  ::  time_point  &  lt  ;  std  ::  chrono  ::  system_clock  &  gt  ;     start       end  ;      start     =     std  ::  chrono  ::  system_clock  ::  now  ();      std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  f  (  42  )     =     &  quot  ;     &  lt  ;  &  lt  ;     fibonacci  (  42  )     &  lt  ;  &  lt  ;     'n'  ;      end     =     std  ::  chrono  ::  system_clock  ::  now  ();      std  ::  chrono  ::  duration  &  lt  ;  double  &  gt  ;     elapsed_seconds     =     end     -     start  ;      std  ::  time_t     end_time     =     std  ::  chrono  ::  system_clock  ::  to_time_t  (  end  );      std  ::  cout     &  lt  ;  &  lt  ;     &  quot  ;  finished     computation     at     &  quot  ;     &  lt  ;  &  lt  ;     std  ::  ctime  (  &  amp  ;  end_time  )      &  lt  ;  &  lt  ;     &  quot  ;  elapsed     time  :     &  quot  ;     &  lt  ;  &  lt  ;     elapsed_seconds  .  count  ()     &  lt  ;  &  lt  ;     &  quot  ;  s    n  &  quot  ;;   }   

الإخراج:

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

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

إنشاء اختبار