298. Stopwatch

[נכתב ע”י שני אלחרר]

אהלן.

לפעמים אנחנו מעוניניים לדעת מה כ”כ איטי בתוכנה שלנו, בזמן Debugging ניתן להתחבר בAttach, לעשות Pause – וססטטיסטית, אם נחזור על הפעולה הזו כמה פעמים, נבין איפה נמצאים החלקים הכבדים בקוד.

אנשים שעוד לא גילו את הProfiler (או שהבינו שהוא יותר מדי שקרן), או אנשים שהם עצלנים כמוני, בדר”כ כותבים כל מיני קטעים בקוד שקשורים לבדיקות זמנים.

הם כותבים קטע כזה בערך :

1
2
3
4
5
6
7
DateTime startTime = DateTime.Now;
DoHeavyWeightStuff();
DateTime endTime = DateTime.Now;
Console.WriteLine("Time took for DoHeavyWeightStuff : {0}", endTime - startTime);

מי שכבר יצא לו יותר מדי פעמים לבצע את החיסור הזה, בטח כבר חפר בStackoverflow/Google/MSDN (או שלא) ומצא שיש מחלקה בשם Stopwatch שנמצאת בNamespace System.Diagnostics ומאפשרת לנו לבדוק זמנים כך :

1
2
3
4
5
6
7
Stopwatch watch = new Stopwatch();
watch.Start();
DoHeavyWeightStuff();
Console.WriteLine("Time took for DoHeavyWeightStuff : {0}", watch.Elapsed);

ניתן לקצר את זה ואפילו לכתוב כך:

1
2
3
4
5
Stopwatch watch = Stopwatch.StartNew();
DoHeavyWeightStuff();
Console.WriteLine("Time took for DoHeavyWeightStuff : {0}", watch.Elapsed);

מה שנחמד במחלקה הזו, זה שניתן להשתמש בStopwatch אחד כדי לבדוק זמן ריצה של מרכיב אחד בתוכנית שלנו לאורך כל התוכנית, בעזרת הפעולות Start וStop. כלומר, אפשר להשתמש באובייקט הזה למשך הרבה זמן ולעשות לו Reuse. והוא גם יעיל (לא משתמש במערך/רשימה בתוכו) 😃

ד.א – לא תמיד ניתן להשתמש בProfiler לבדיקת זמנים (אפליקציות מבצעיות וכו’), במקרים כאלה אשתמש בStopwatch.

יום בדיקת זמנים מעולה.

שתף