עבור לתוכן

מדידת זמן בין DateTime

Featured Replies

פורסם

יש לי קוד שעושה משהו מסויים ומשתמש ב-delay בין פעולה לפעולה, עכשיו מה שקורה ז זה אמור להיות מאוד מאוד מדוייק ה- delay ובגלל כל מיני שורות קוד באמצע הזמן מתארך לי למשל אם הכל צריך לרוץ 50 דק' אז זה יוצא עוד איזה דקה או שתיים שזה קריטי לי, מה שעשיתי זה לשים datetime מסויים איפשהו בקוד ועוד אחד ממש לפני ה- delay ואז הוריד מהזמן של ה- delay את הזמן בין 2 ה- datetime וככה הקוד ירוץ לי באופן יותר מדוייק אז אחרי 2 ה- datetime ששמתי יש לי את השורת קוד הבאה:

double dif = d2.Subtract(d1).TotalMilliseconds;

כאשר D1 ו-D2 הם ה-DateTime אבל ההבדל יוצא לי כל הזמן 0 ואני לא מבין למה.

פורסם

יכול להיות שהקוד רץ כל כך מהר שהשעון לא הספיק להתעדכן (המחשב מריץ מיליארדי פעולות בשנייה אחת, דהיינו מיליוני פעולות כל מילי שנייה).

קצת קשה לומר בדיוק מה הבעיה בלי לראות את השאר הקוד.

פורסם

תשתמש בפקודת קריאה כדי לעכב קצת את המעבד.

פורסם
  • מחבר

פשוט עשיתי DateTime.Now ב-2 מקומות ובאמצע רצות כל מיני שורות קוד.

פורסם

נשמע של-DateTime.Now אין רזולוציה מספיקה למה שאתה רוצה למדוד. נכון שהוא מחזיר מילישניות אבל זה לא אומר שהוא באמת מתעדכן כל מילישניה. לפי זה:

http://msdn.microsoft.com/en-us/library/system.datetime.now.aspx

במערכת מודרנית הוא מתעדכן רק כל 10 מילישניות.

אם מה שאתה מנסה למדוד הוא פעולה שחוזרת על עצמה (כמו לולאה) אז יותר מדוייק במקום למדוד כל פעולה בנפרד למדוד כל 1000 פעולות (למשל) ולעשות את החשבון בהתאם. אפשרות אחרת היא להשתמש ב-System.Diagnostics.Stopwatch שאמור להיות מדוייק יותר.

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

פורסם
  • מחבר

אני אנסה תודה רבה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים