Результат: ученик различает календарный момент, длительность и монотонно измеренное прошедшее время, выполняет безопасную временную арифметику и строит воспроизводимый протокол измерения программного участка.
Содержание:
-
Различить временные величины
DateTimeкак календарный момент;TimeSpanкак знаковая длительность;Stopwatchкак измеритель прошедшего времени;- момент плюс длительность;
- разность двух моментов;
- невозможность использовать календарные часы как точную замену монотонному измерителю.
-
Создавать и сравнивать календарные моменты
- конструкторы
DateTime; - компоненты даты и времени;
DateTimeKind;- согласованная временная шкала внутри задачи;
- операторы сравнения;
- устойчивый строковый формат.
- конструкторы
-
Работать с
TimeSpan- создание из дней, часов, минут, секунд, миллисекунд и тактов;
- компоненты
Days,Hours,Minutes,Seconds; - полные величины
TotalDays,TotalHours,TotalSeconds; TimeSpan.Zero;- положительная, нулевая и отрицательная длительность;
- целочисленное усечение при работе с тактами.
-
Строить интервалы и расписания
- полуоткрытый интервал
[start, end); - касание и пересечение;
- объединение занятых интервалов;
- свободные промежутки;
- периодические точки;
- пиковая одновременность;
- представимость результата в диапазоне
DateTime.
- полуоткрытый интервал
-
Получать согласованный снимок текущего времени
DateTime.NowиDateTime.UtcNowпо назначению;- один вызов как основа одного отчёта;
- изменение времени между независимыми вызовами;
- непригодность фактического текущего момента как фиксированного тестового ожидания.
-
Управлять жизненным циклом
StopwatchStart,Stop,ResetиRestart;IsRunning;- накопление после повторного
Start; Elapsed,ElapsedMillisecondsиElapsedTicks;- показание во время работы и после остановки.
-
Различать две шкалы тактов
TimeSpan.TicksPerSecond;Stopwatch.Frequency;- перевод
ElapsedTicksв секунды; Elapsed.Ticksкак тактыTimeSpan;- ошибка прямого использования
TimeSpan.FromTicks(stopwatch.ElapsedTicks).
-
Изолировать измеряемый участок
- подготовка входа вне таймера;
- прогрев;
- исключение вывода и форматирования;
- проверка результата после остановки;
- контрольная сумма, делающая результат наблюдаемым;
- восстановление изменяемого входа между повторами.
-
Проектировать серию измерений
Releaseбез подключённого отладчика;- фиксированная версия среды и параметры компьютера;
- одинаковые входы;
- чередование порядка сравниваемых алгоритмов;
- несколько размеров;
- достаточное число повторов;
- предел слишком дорогой серии.
-
Описывать распределение замеров
- минимум;
- медиана;
- среднее;
- максимум;
- размах и относительный размах;
- нулевые измерения и разрешение таймера;
- отказ от автоматического удаления медленных повторов без правила.
-
Сопоставлять время с числом операций
- счётчик сравнений и перемещений;
- лучший, средний и худший случаи;
- нормировки
t / n,t / (n log n)иt / n²; - постоянные накладные расходы;
- пакетирование слишком короткой операции;
- границы вывода по измеренному диапазону.
-
Аудировать методику
- один запуск;
Debugпод отладчиком;- разные входы;
- повторная обработка изменённого массива;
- смешение ядра и полной стратегии;
- неверная единица времени;
- объявление одного размера доказательством асимптотики.

