Измерение времени. Чтобы точно измерить время выполнения куска кода, в .NET для этого предусмотрены классы Stopwatch, DateTime. 1. Измерение времени через DateTime. Особенностью на C# является то, что конструктор по умолчанию для DateTime возвращает не текущее время, а минимальное. Структура была выбрана из соображений производительности, чтобы сделать экземпляры DateTime очень легковесными, но одним из многочисленных последствий этого является то, что вы не можете определить поведение структуры в конструкторе по умолчанию. Конструктор по умолчанию структуры всегда инициализирует все поля текущими значениями (ноль для числовых типов, null для ссылочных типов, и т.д.). Для DateTime это означает, что единственное поле ее экземпляра (dateData) инициализируется нулем. Так что же такое dateData? Это длинное целое, два старших бита которого указывают тип DateTime (Unspecfied - не задан, UTC (всемирное координированное время), Local - местное время), а остальные биты (62) - это количество тактов с полуночи 1 января 0001 года нашей эпохи. Поскольку текущими значениями всех полей структуры являются их значения по умолчанию, поэтому используемый при создании DateTime конструктор по умолчанию дает вам случай, когда значение dateData равно нулю. Это означает, что количество тактов (младшие 62 бита) равны нулю, и тип (старшие 2 бита) также равен нулю. Это нулевое смещение от минимального значения DateTime и тип Unspecified. Большинство из вас знают, что мы можем сравнивать экземпляры DateTime с помощью традиционных операторов сравнения (<, <=,>,> =, ==,! =) или с помощью метода CompareTo(). Но мы также можем складывать и вычитать экземпляры DateTime. DateTime является неизменяемым, что означает, что каждый раз при операциях с DateTime создается новый экземпляр. Но так как DateTime - это структура с одним полем, то связанные с этим расходы крайне малы, и вы не должны учитывать этот фактор. Cтруктура DateTime имеет много преимуществ. Несмотря на то что она очень легкая и производительная, в то же время её мощь обеспечивается с помощью операций, которые она поддерживает. 2. Измерение времени через Stopwatch. Предоставляет набор методов и средств, которые можно использовать для точного измерения затраченного времени. Экземпляр Stopwatch может измерять затраченное время для одного интервала или общее затраченное время для нескольких интервалов. По умолчанию значение затраченного времени экземпляра Stopwatch равно общей сумме всех измеренных интервалов времени. Каждый вызов метода Start начинает подсчет совокупного затраченного времени; каждый вызов метода Stop завершает текущий интервал подсчета и фиксирует совокупное затраченное время. Используйте метод Reset, чтобы очистить совокупное затраченное время в существующем экземпляре Stopwatch. Экземпляр Stopwatch измеряет затраченное время с помощью подсчета тактов таймера на нижнем уровне временного механизма. Если установленное оборудование и операционная система поддерживают счетчики производительности высокого разрешения, то класс Stopwatch использует этот счетчик для измерения затраченного времени. В противном случае класс Stopwatch использует системный таймер для измерения затраченного времени На многопроцессорном компьютере не имеет значения, на каком из процессоров выполняется поток. Однако, из-за ошибок в BIOS или слое абстрагированного оборудования (HAL), можно получить различные результаты расчета времени на различных процессорах. 3. Результат программы ) тестирования (скриншоты результата выполнения