|
Программирование >> Автоматически обновляемые приложения
Класс Stopwatch Казалось бы, в дискуссии по измерению длительности операции поставлена точка. Но существует еще и четвертый способ! В .NET Framework 2.0 появился новый класс Stopwatch, который, как cкaзaю в документации MSDN, и int endOp = Environment.TickCount; завершение измерения Выводим результат MessageBox.Show( TickCount = + (endOp - startOp)); Итак, вы рассмотрели все три способа и выбрали самый очевидный вариант с применением функции Windows API? Не торопитесь. Вот что думает по этому поводу в своем блоге http: bIogs.gotdotnet.ru/personal/inihaiIik Олег Михайлик. Приведу часть его аргументации. Метод с использованием функций Windows измеряет время очень точно. Но зачем вообще может понадобиться такая точность? Допустим, мы хотим измерить скорость очень быстрой операции. Как бы вы поступили в этом случае? Я думаю, для грамотного инженера ответ очевиден: запустить сто, тысячу, миллион операций - и измерить общее время выполнения. Очевидно, что метод цикла значительно надежнее и точнее самого лучшего в мире измерения, но единичной операции. Это очевидные статистические законы. Если мы применим метод с использованием QueryPerf ormance ДЛЯ измерения продолжительности того же большого цикла, то он сразу потеряет все свои преимущества. Если операция длится секунды, то погрешность в третьем знаке не играет значения. На фоне длительных операций использование DateTime.Now практически ничем не хуже системных счетчиков производительности. Также нельзя обойти стороной проблему архитектуры процессора. Многие современные и все будущие процессоры - двуядерные. Следовательно, измерять такты процессора не так уж и правомочно. Измеряемая операция попросту может выполняться на нескольких процессорах последовательно, перепрыгивая с одного на другой. Кроме того, многие современные процессоры могут на лету изменять частоту. Если за время измерения этот показатель изменится, точность сразу пострадает. Отсюда вывод- для измерений ЛУЧШЕ использовать более простой и прозрачный метод DateTime.Now. Заключение Итак, мы рассмотрели типичные примеры работы с приложениями. Теперь вы можете приступать к созданию сложных программ, которых так ждут ваши пользователи. В этой главе я обошел вниманием такие важные вещи, как отладка приложений, поиск багов, тестирование. Но здесь простыми трюками не обойтись. Необходимо почитать серьезную литературу, чтобы стать хорошим специалистом по этим вопросам. призван заменить неуправляемый код с использованием функций QueryPerformanceCounter И QueryPerformanceFrequency. Изучением данного класса займитесь самостоятельно. Глава 10 Диски, папки и файлы В этой главе мы поговорим о файловой системе. Начнем с дисков, потом рассмотрим приемы работы с папками и закончим главу советами по работе с файлами. Диски Диски являются вершиной в иерархии файловой системы, и именно в них содержатся файлы и папки. Рассмотрим наиболее востребованные программистами приемы извлечения нужной информации. Как получить список логических дисков? в .NET Framework имеются два метода GetLogicaiDrives, которые возвращают массив имен логических дисков. Один метод относится к классу Directory, а второй- К классу Environment. В листинге 10.1 рассматриваются оба варианта. \hmrmri($A.t\m)f4Bm0 сптт рогичеоких диеш . Два tnoco6a private void buttonl Click(object sender, EventArgs e) { string[] astrLogicalDrives = System.10.Directory.GetLogicaiDrives( foreach (string disk in astrLogicalDrives) listBoxl.Items.Add(disk);
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |