טיימר בעל ביצועים גבוהים בדלפי

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

עיתוי הקוד שלך

ביישומים מסוימים, שיטות מדידת זמן מדויקות מאוד, חשובות ומזל דלפי מספק מונה בעל ביצועים גבוהים כדי להעפיל לזמנים אלה.

באמצעות RTL עכשיו פונקציה

אפשרות אחת משתמשת ב- עכשיו פונקציה. עכשיו, מוגדר בסעיף SysUtils יחידה, מחזירה את התאריך והשעה הנוכחיים של המערכת.

מספר שורות קוד מודדות את הזמן שחלף בין ה"התחלה "ל"הפסקה" של תהליך כלשהו:

הפונקציה Now מחזירה את התאריך והשעה הנוכחיים של המערכת המדויקים עד 10 אלפיות השנייה (Windows NT ואילך) או 55 אלפיות השנייה (Windows 98).

לפרקי זמן קטנים מאוד הדיוק של "עכשיו" לפעמים אינו מספיק.

שימוש ב- Windows API GetTickCount

לקבלת נתונים מדויקים עוד יותר, השתמש ב - GetTickCountממשק API של Windows פונקציה. GetTickCount מאחזר את מספר אלפיות השנייה שחלפו מאז הפעלת המערכת, אך הפונקציה קיימת רק הדיוק של 1 שניות וייתכן שלא תמיד יהיה מדויק אם המחשב נשאר במתח במשך תקופות ארוכות של זמן.

instagram viewer

הזמן שחלף מאוחסן כערך DWORD (32 סיביות). לכן הזמן יעבור לאפס אם Windows יופעל ברציפות במשך 49.7 יום.

GetTickCount מוגבלת גם לרמת הדיוק של טיימר המערכת (10/55 ms).

תזמון דיוק גבוה של הקוד שלך

אם המחשב האישי שלך תומך בדלפק ביצועים ברזולוציה גבוהה, השתמש ב- שאילתה ביצוע תדירות פונקצית ה- API של Windows לביטוי התדר, בספירות לשנייה. ערך הספירה תלוי במעבד.

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

הדיוק של טיימרים ברזולוציה גבוהה הוא סביב כמה מאות ננו-שניות. ננו-שניה היא יחידת זמן המייצגת 0.000000001 שניות - או מיליארד מאית השנייה.

TStopWatch: יישום דלפי של מונה בעל רזולוציה גבוהה

בהנהון למוסכמות. ללא שם, מונה כמו TStopWatch מציע פיתרון דלפי ברזולוציה גבוהה למדידות זמן מדויקות.

TStopWatch מודד את הזמן שחלף על ידי ספירת קרציות טיימר במנגנון הטיימר הבסיסי.

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

להלן דוגמא לשימוש:

instagram story viewer