Spec-Zone.ru › Ada 2005
Справочник по Ada 2005

D.14 Время выполнения

Этот раздел описывает пакет, определённый языком, для измерения времени выполнения.

Статическая семантика

Существует следующий определяемый языком библиотечный пакет:
with Ada.Task_Identification;
with Ada.Real_Time; use Ada.Real_Time;
package Ada.Execution_Time is
type CPU_Time is private;
CPU_Time_First : constant CPU_Time;
CPU_Time_Last : constant CPU_Time;
CPU_Time_Unit : constant := определяемое реализацией вещественное число;
CPU_Tick : constant Time_Span;
function Clock
(T : Ada.Task_Identification.Task_Id
:= Ada.Task_Identification.Current_Task)
return CPU_Time;
function "+" (Left : CPU_Time; Right : Time_Span) return CPU_Time;
function "+" (Left : Time_Span; Right : CPU_Time) return CPU_Time;
function "-" (Left : CPU_Time; Right : Time_Span) return CPU_Time;
function "-" (Left : CPU_Time; Right : CPU_Time) return Time_Span;
function "<" (Left, Right : CPU_Time) return Boolean;
function "<=" (Left, Right : CPU_Time) return Boolean;
function ">" (Left, Right : CPU_Time) return Boolean;
function ">=" (Left, Right : CPU_Time) return Boolean;
procedure Split
(T : in CPU_Time; SC : out Seconds_Count; TS : out Time_Span);
function Time_Of (SC : Seconds_Count;
TS : Time_Span := Time_Span_Zero) return CPU_Time;
private
... -- не определено языком
end Ada.Execution_Time;
Время выполнения, или время процессора заданного задания, определяется как время, затрачиваемое системой на выполнение этого задания, включая время выполнения операций в реальном времени или системных сервисов от его имени. Механизм измерения времени выполнения определяется реализацией. Реализация определяет, какое задание, если таковое имеется, несет ответственность за время выполнения, потребляемое обработчиками прерываний и службами выполнения от имени системы.
Тип CPU_Time представляет собой время выполнения задания. Множество значений этого типа взаимно однозначно соответствует определённому реализацией диапазону математических целых чисел.
Значение CPU_Time I представляет собой полуоткрытый интервал времени выполнения, который начинается с I*CPU_Time_Unit и ограничен (I+1)*CPU_Time_Unit, где CPU_Time_Unit — определённое реализацией вещественное число. Для каждого задания значение времени выполнения устанавливается в ноль при создании задания.
CPU_Time_First и CPU_Time_Last — это наименьшее и наибольшее значения типа CPU_Time соответственно.

Динамическая семантика

CPU_Time_Unit — это наименьший отрезок времени выполнения, представимый типом CPU_Time; он выражается в секундах. Такт процессорного таймера — это интервал времени выполнения, в течение которого значение таймера (наблюдаемое при вызове функции Clock) остаётся постоянным. CPU_Tick — это средняя длительность таких интервалов.
Эффекты операторов над CPU_Time и Time_Span соответствуют эффектам операторов, определённых для целочисленных типов.
Функция Clock возвращает текущее время выполнения задания, идентифицируемого T; Tasking_Error генерируется, если это задание завершило работу; Program_Error генерируется, если значение T равно Task_Identification.Null_Task_Id.
Эффекты операций Split и Time_Of определяются следующим образом, рассматривая значения типа CPU_Time, Time_Span и Seconds_Count как математические целые числа. Эффект Split (T, SC, TS) заключается в установке значений SC и TS таким образом, чтобы T*CPU_Time_Unit = SC*1.0 + TS*CPU_Time_Unit, и 0.0 ≤ TS*CPU_Time_Unit < 1.0. Значение, возвращаемое Time_Of(SC,TS), — это значение времени выполнения T, такое что T*CPU_Time_Unit=SC*1.0 + TS*CPU_Time_Unit.

Ошибка выполнения

При вызове Clock, если задание, идентифицируемое T, больше не существует, выполнение программы является ошибочным.

Требования к реализации

Диапазон значений CPU_Time должен быть достаточным для уникального представления диапазона времен выполнения от запуска задания до 50 лет выполнения позже. CPU_Tick не должен превышать 1 миллисекунды.

Требования к документации

Реализация должна документировать значения CPU_Time_First, CPU_Time_Last, CPU_Time_Unit и CPU_Tick.
Реализация должна документировать свойства лежащего в основе механизма измерения времен выполнения, такие как поддерживаемый диапазон значений и любые соответствующие аспекты используемых аппаратных или операционных системных средств.

Метрики

Реализация должна документировать следующие метрики:
  • Верхняя граница продолжительности интервала времени выполнения тика таймера. Это значение D, такое что если t1 и t2 — любые времена выполнения заданного задания, такие что t1 < t2 и Clockt1 = Clockt2, то t2 – t1 ≤ D.
  • Верхняя граница величины скачка таймера. Скачок таймера — это разница между двумя последовательными различными значениями таймера времени выполнения (наблюдаемого при вызове функции Clock с тем же Task_Id).
  • Верхняя граница времени выполнения вызова функции Clock в тактах процессора.
  • Верхние границы времени выполнения операторов типа CPU_Time в тактах процессора.

Разрешения для реализации

Реализации, предназначенные для машин со значением слова меньше 32 бит, не обязаны поддерживать полный диапазон и точность типа CPU_Time.

Рекомендации по реализации

По возможности, реализации должны обеспечивать механизмы настройки для изменения значения CPU_Tick.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API