В зависимости от требуемой точности оценку времени выполнения можно получить разными способами.
int start = Environment.TickCount;
// ваши действия
int end = Environment.TickCount;
Console.WriteLine("Ticks : " + (end-start)); //ваш результат
Измерение с помощью TickCount
При этом способе точность получится наименьшая.
// ваши действия
int end = Environment.TickCount;
Console.WriteLine("Ticks : " + (end-start)); //ваш результат
Измерение с помощью Ticks
В этом случай вы получите более точный результат . Точность 100 наносекунд.
long start = DateTime.Now.Ticks;
// ваши действия
long end = DateTime.Now.Ticks;
Console.WriteLine("Ticks : " + (end-start)); //ваш результат
Измерение с помощью QueryPerformance
Самую высокую точность (1/3579545 секунды) можно получить данным способом.
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
extern static short QueryPerformanceCounter(ref long x);
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
extern static short QueryPerformanceFrequency(ref long x);
long ctrl1 = 0, ctrl2 = 0, freq = 0;
и уже в вашем методе дополняете код .
// начало измерения
if (QueryPerformanceCounter(ref ctrl1) != null)
{
// ваши действия
// Завершение измерения
QueryPerformanceCounter(ref ctrl2);
QueryPerformanceFrequency(ref freq);
Console.WriteLine("Минимальное разрешение : 1/" + freq + " сек.");
Console.WriteLine("Время выполнения " + (ctrl2 - ctrl1) * 1 / freq + " сек.");
}
Все три описанных решения неверные! Существуют стандартные специализированные решения для данных измерений, например System.Diagnostics.Stopwatch
ОтветитьУдалитьВыложите Ваш код пожалуйста!
Удалитьhttp://easy-c-sharp.blogspot.com/2012/09/c-list.html
Удалить