StopWatch
শ্রেণী থাকতে হবে না Disposed
বা Stopped
ত্রুটি সম্পর্কে। সুতরাং, সবচেয়ে সহজ কোডে সময় কিছু কর্ম হয়
public partial class With
{
public static long Benchmark(Action action)
{
var stopwatch = Stopwatch.StartNew();
action();
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds;
}
}
নমুনা কলিং কোড
public void Execute(Action action)
{
var time = With.Benchmark(action);
log.DebugFormat(“Did action in {0} ms.”, time);
}
কোডটিতে পুনরাবৃত্তিগুলি অন্তর্ভুক্ত করার ধারণাটি আমি পছন্দ করি না StopWatch
। আপনি সর্বদা অন্য পদ্ধতি বা এক্সটেনশন তৈরি করতে পারেন যা সম্পাদনকারী N
পুনরাবৃত্তিগুলি পরিচালনা করে ।
public partial class With
{
public static void Iterations(int n, Action action)
{
for(int count = 0; count < n; count++)
action();
}
}
নমুনা কলিং কোড
public void Execute(Action action, int n)
{
var time = With.Benchmark(With.Iterations(n, action));
log.DebugFormat(“Did action {0} times in {1} ms.”, n, time);
}
এখানে এক্সটেনশন পদ্ধতির সংস্করণ রয়েছে
public static class Extensions
{
public static long Benchmark(this Action action)
{
return With.Benchmark(action);
}
public static Action Iterations(this Action action, int n)
{
return () => With.Iterations(n, action);
}
}
এবং নমুনা কলিং কোড
public void Execute(Action action, int n)
{
var time = action.Iterations(n).Benchmark()
log.DebugFormat(“Did action {0} times in {1} ms.”, n, time);
}
আমি স্থিতিশীল পদ্ধতি এবং সম্প্রসারণের পদ্ধতিগুলি (পুনরাবৃত্তি এবং বেঞ্চমার্কের সংমিশ্রণ) এবং প্রত্যাশিত এক্সিকিউশন সময় এবং রিয়েল এক্সিকিউশন সময় এর ডেল্টা পরীক্ষা করেছি <= 1 এমএস।