Другие языки программирования и технологии

Время работы программы в Паскаль

На многих серверах по проверке олимпиадных заданий пишется максимальное время на прохождение каждого теста, например 0.1 с. Есть 2 вопроса:
1. Ведь разные по мощности компьютеры выполнят программу за разное время
2. Есть ли средства Паскаль (хоть в какой-нибудь среде) для определения времени выполнения программы?
нет таких средств. есть функции, которые получают время милисикундах, используя их можно получить фактическое время работы, но спрогнозировать нет. Ну я о таких точно не слышал.
Александр Петров
Александр Петров
22 439
Лучший ответ
Игорь Толкушкин И как тогда на олимпиадах это определяют?
Время выполнения там обычно дается на пару порядков больше необходимого, т. е. если у тебя не слишком тупорылый алгоритм, ты в него гарантированно уложишься.
Для проверки можно запомнить текущее время в начале выполнения программы и в конце, а затем вычесть одно из другого, конвертировать в строку и вывести на экран.
Михаил Романов
Михаил Романов
89 259
Игорь Толкушкин Ага... Уложишься, когда надо перебирать тысячи путей по тысячам путей. Или теорию графов учить...)))
Это там чепуха написана. Время выполнения операции на современном компьютере - порядка одной миллиардной доли секунды, это сколько же в программе должно быть действий, чтобы она длилась 0,1 с? А Windows работает в многозадачном режиме, так что вообще функции определения времени работы программы будут определять время работы всех запущенных вместе с данной программ, в том числе служб Windows, вместе.
Вадим Сычёв
Вадим Сычёв
84 259
Николай Ляпин Я тут делал одну задачку на паскале - минут 30 тарабанила))
Игорь Толкушкин Ну, когда приходится сортировать массивы типа Longint...
посмотри это
Модуль Timers

--------------------------------------------------------------------------------

Таймеры позволяют выполнять указанное действие периодически через равные промежутки времени. Процедуры и функции для управления таймерами содержатся в модуле Timers.

Функция CreateTimer(ms,TimerProc) создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре без параметров TimerProc, и возвращает его целочисленный описатель. Созданный таймер сразу же запускается.

Функция CreateTimerExt(ms,TimerProcExt) создает таймер, выполняющий каждые ms миллисекунд действие, содержащееся в процедуре с одним целочисленнным параметром TimerProcExt, и возвращает его целочисленный описатель. Созданный таймер сразу же запускается. Целочисленный параметр, передаваемый процедуре TimerProcExt, хранит описатель таймера, вызвавшего эту процедуру.

Процедура StartTimer(n) запускает таймер с описателем n.

Процедура StopTimer(n) останавливает таймер с описателем n.

Процедура SetTimerInterval(n,ms) устанавливает у таймера с описателем n интервал в ms миллисекунд.

Функция TimerInterval(n) возвращает интервал у таймера с описателем n.

Функция TimerEnabled(n) возвращает True, если таймер запущен, и False в противном случае.

Процедура DestroyTimer(n) разрушает таймер с описателем n.