| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Измерение скорости исполнения кода |
| Автор: Eatmeat 4.12.2006, 22:00 |
| Собственно, чем лучше измерять скорость исполнения кода? |
| Автор: Naum 5.12.2006, 10:02 |
| Самый простой способ, который я знаю: Вставляешь перед кодом, скорость выполнения которого надо измерить, что-нибудь типа: DateTime tn=DateTime.Now; а после tn=DateTime.Now.Subtract(tn); и выводишь куда-нибудь эту самую tn. |
| Автор: DarkDragon 5.12.2006, 13:21 | ||
Вроде возвращает TimeSpan структуру, а не класс DateTime.
И еще Naum, код C# в VB.NET Если Windows приложение, тогда Debug: Debug.WriteLine (tp.Seconds) Если Console приложение, тогда Console: Console.WriteLine (tp.Ticks) |
| Автор: Naum 5.12.2006, 13:34 |
| Блин, запутался совсем. Вообще-то я VB-шник, но все пытаюсь перейти на C#, потому что на работе недовольны. |
| Автор: popzow 5.12.2006, 14:18 |
| Часто необходимо измерить время выполнения куска кода. Как это сделать? В .NET это делатется с помощью классов DateTime и TimeSpan. Dim datebefore As Date 'Здесь хранится время запуска кода Dim dateafter As Date 'Здесь время окончания кода Dim tspan As New TimeSpan 'Это для вычисления разницы между dateafter и datebefore 'Засекаем время datebefore = Now '---здесь располагается код--- 'Смотрим время dateafter = Now tspan = dateafter.Subtract(datebefore) MsgBox("Время выполнения: " & tspan.TotalMilliseconds.ToString) |
| Автор: ivashkanet 5.12.2006, 15:07 |
| |
| Автор: Дрон 5.12.2006, 15:33 |
Тут вот привели решения, основанные на разности времени окончания и начала работы. На самом деле это не совсем корректно. Дело в том, что это время может сильно варьироваться, например, в зависимости от загруженности процессора другими задачами. Кроме того, DateTime имеет не слишком большую точность -- порядка 15 мс. Первое можно учесть, используя вместо DateTime.Now.Ticks выражение System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime.Ticks. Тогда мы узнаем то время, которое потрачено процессором именно на выполнение нашей задачи. Только точность там всё-равно ~15 мс. Если же нужно замерить длительность совсем короткую операции и нужна высокая точность (правда без учёта выполнения параллельных задач), то используйте класс System.Diagnostics.Stopwatch. |
| Автор: Naum 5.12.2006, 15:52 |
| Если уж речь зашла о времени процессора, mr.Duda недавно постил интересную http://www.dtf.ru/articles/read.php?id=39888. Добавлено @ 15:53 Правда, к .NET не имеет никакого отношения. Но все равно интересно почитать. |