Время работы программы

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Время работы программы

Сообщение Vadim » 09.12.2018 11:56:10

Посоветуйте кроссплатформенное средство для подсчёта времени работы программы, не привязанное к функциям даты. Считать нужно в секундах, а не в тиках процессора (про RTDSC я знаю... :-) ). Windows, Linux.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время работы программы

Сообщение Лекс Айрин » 09.12.2018 12:49:04

Прямой доступ к контролеру тактового генератора. Естественно, на ассемблере.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Время работы программы

Сообщение zub » 09.12.2018 13:49:27

Вы тут с ассемблером с дуба рюхнулись. Забыть про него давно надо. Тем более кроссплатформенный.

Любой таймер тикающий каждую единицу времени (секунду) в обработчике простой инкремент переменной, хранящей время работы в этих еденицах
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Время работы программы

Сообщение Vadim » 09.12.2018 13:56:47

Лекс Айрин писал(а):рямой доступ к контролеру тактового генератора. Естественно, на ассемблере.

Ужас какой... Пошёл за валерьянкой и валидолом... :-D
А есть что-нибудь относительно высокоуровневое?
В принципе можно условную компиляцию сделать:
Код: Выделить всё
function GetSeconds(): longint;
begin
{$IFDEF WINDOWS}
  result:=GetTickCount div 1000;
{$ELSE}
  result:= ???????
{$ENDIF}
end;


Добавлено спустя 1 минуту 21 секунду:
zub писал(а):Любой таймер тикающий каждую единицу времени (секунду) в обработчике простой инкремент переменной, хранящей время работы в этих еденицах

Окошек нет - чистая консоль...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время работы программы

Сообщение zub » 09.12.2018 15:16:46

EpicTimer?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Время работы программы

Сообщение MysticCoder » 09.12.2018 17:03:09

Vadim писал(а):В принципе можно условную компиляцию сделать:


GetTickCount зависит от частоты проца и может ускоряться\замедляться. Построенная на нем игруха на другом компе у меня шла в 5 раз быстрее :D +32хбитность через несколько дней даст переполнение. Лучше замени на связку NTQueryPerfomanceCounter и NTQueryPerfomanceFrequency или что то типа того.

под линух:

Код: Выделить всё
{$IFDEF LINUX}
function GetTickCount: Cardinal;
var
  tv: timeval;
begin
  gettimeofday(tv, nil);
  Result := int64(tv.tv_sec) * 1000 + tv.tv_usec div 1000;
end;
{$ENDIF}
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Время работы программы

Сообщение Дож » 09.12.2018 17:24:37

Плюсую за EpicTimer
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Время работы программы

Сообщение Лекс Айрин » 09.12.2018 17:26:09

zub писал(а):Вы тут с ассемблером с дуба рюхнулись. Забыть про него давно надо.


Увы... для некоторых штучек типа сверхточных таймеров он идеален. Что-то более высокоуровневое в данном случае менее надежно. Единственное... даст ли система подцепиться к обработчику.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Время работы программы

Сообщение zub » 09.12.2018 18:08:08

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

>>Увы... для некоторых штучек типа сверхточных таймеров он идеален
сим извещаю - MSDOS умер.
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Время работы программы

Сообщение Vadim » 09.12.2018 18:17:15

MysticCoder писал(а):...+32хбитность через несколько дней даст переполнение.

Нынешний компилятор напоминает, что нынче надо использовать GetTickCount64()... ;-) Но вряд ли это придаст стабильности, т.к. всего лишь увеличивает объём хранилища под 64-битные системы.

Добавлено спустя 1 минуту 6 секунд:
zub писал(а):EpicTimer?

Ок. Посмотрю, что там внутри...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время работы программы

Сообщение Лекс Айрин » 09.12.2018 18:32:29

zub писал(а):сим извещаю - MSDOS умер.


Я не знаю как в десятке, но в ХР он живее всех живых... Пошукал... и в десятке от этого недостатка не избавились совсем. Просто засунули в глубь системы и заперли на пару замков. В никсах с этим вроде как посложнее.

zub писал(а):ну давайц, получи доступ хоть к чемунить железному в современной оси.


Может и стоит попробовать. Найду только справочник по прерываниям биоса. Впрочем, даже если не получится, то это ровным счетом ничего не значит -- в ассемблере я так до конца и не разобрался. Да и нужно это преимущественно при написании драйверов.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Время работы программы

Сообщение Vadim » 09.12.2018 18:43:25

Лекс Айрин писал(а):Может и стоит попробовать. Найду только справочник по прерываниям биоса. Впрочем, даже если не получится, то это ровным счетом ничего не значит...

На самом деле многие прерывания будут нормально работать. Вот только в отличие от чистого MSDOS, это будет эмуляция на основе WinAPI. Заранее предупреждаю - лезть с прерываниями для видеокарт типа CGA или EGA не стоит, операционка будет изрядно удивлена... :-D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время работы программы

Сообщение Лекс Айрин » 09.12.2018 19:23:10

Vadim, да в курсе я. И даже не совсем эмуляция. Фактически, обработчики прерываний просто заменены Если честно, я не ожидал, что кто-то серьезно воспримет мои слова :lol: Просто показал. что это желание немного странноватое. Чем более высокоуровневые функции, тем меньше точность таймера.
Vadim писал(а):Заранее предупреждаю - лезть с прерываниями для видеокарт типа CGA или EGA не стоит, операционка будет изрядно удивлена...

Логично. Уж эти точно переписаны.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Время работы программы

Сообщение Vadim » 09.12.2018 20:03:41

Лекс Айрин писал(а):Чем более высокоуровневые функции, тем меньше точность таймера.

Ну, милисекунды мне и не нужны. Функции тяжёлые и многоповторяющиеся, так что речь идёт о десятках и сотнях секунд...
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Время работы программы

Сообщение zub » 09.12.2018 20:18:49

Вы про какие прерывания? INT xxH чтоли? это никакой не прямой доступ, это просто способ вызвать соответствующую процедуру
Прямой доступ он через порты, и любая нормальная операционка сразу грохнет пользовательскую программу при таких попытках
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru