כרונו ב-C++

היא כותרת C++ המספקת אוסף של סוגים ופונקציות לעבודה עם הזמן. זה חלק מספריית התבניות הסטנדרטית של C++ (STL) והוא כלול ב-C++11 ואילך.

מספק שלושה סוגים עיקריים של שעונים: system_clock steady_clock ו-high_resolution_clock. שעונים אלו משמשים למדידת זמן בדרכים שונות.

system_clock מייצג את שעון הקיר בזמן אמת בכל המערכת. זה מושפע מהתאמות הזמן של המערכת.
steady_clock מייצג שעון שהולך וגדל באופן מונוטוני שאינו מושפע משינויים בזמן המערכת.
high_resolution_clock הוא השעון עם תקופת התקתק הקצרה ביותר הזמינה במערכת.

מספק גם אוסף של סוגי משך זמן כולל משך שניתן להשתמש בהם כדי לייצג משך זמן. Rep הוא סוג הייצוג (כגון int או long) ו- Period הוא היחס בין משך הזמן (כגון ננו-שניות או שניות).
בְּנוֹסַף מספק אוסף של סוגי נקודות זמן כולל time_point שניתן להשתמש בהם כדי לייצג נקודת זמן. שעון הוא סוג השעון (כגון system_clock) ו-Duration הוא סוג משך הזמן (כגון שניות)

ספריית Chrono משמשת להתמודדות עם תאריך ושעה. ספרייה זו תוכננה להתמודד עם העובדה שטיימרים ושעונים עשויים להיות שונים במערכות שונות ובכך להשתפר עם הזמן מבחינת דיוק. הדבר הייחודי בכרונו הוא שהוא מספק א מושג דיוק ניטרלי על ידי הפרדת משך ונקודת זמן (נקודת זמן) משעונים ספציפיים. chrono הוא שם של כותרת וגם של מרחב משנה: כל האלמנטים בכותרת זו (למעט ההתמחויות common_type) אינם מוגדרים ישירות תחת מרחב השמות std (כמו רוב הספרייה הרגילה) אלא תחת std::chrono מרחב שמות . האלמנטים בכותרת זו עוסקים בזמן. זה נעשה בעיקר באמצעות שלושה מושגים:

מֶשֶׁך

אובייקט משך מבטא טווח זמן באמצעות ספירה כמו דקה שעתיים או עשר מילישניות. לדוגמה, '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++ מגדיר שלושה סוגי שעונים:

    מערכת_שעון -זו השעה הנוכחית לפי המערכת (שעון רגיל אותו אנו רואים בסרגל הכלים של המחשב). זה כתוב כ- std::chrono::system_clock שעון_יציב זה שעון מונוטוני שלעולם לא יתכוונן. הוא הולך בקצב אחיד. זה כתוב כ- std::chrono::steady_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 

חשוב לציין שהדיוק והדיוק של השעונים ומשכי הזמן הניתנים על ידי עשוי להשתנות בהתאם למערכת ולפלטפורמה ותמיד מומלץ לבדוק את התיעוד של הפלטפורמה שלך לקבלת מידע נוסף.

צור חידון