/// Макс. поддерживаемая системой частота таймера
LARGE_INTEGER _frequency_HRT;
/// Узнаем ее
QueryPerformanceFrequency(&_frequency_HRT);
/// Время от начала
LARGE_INTEGER _begin_time;
/// Время конца
LARGE_INTEGER _end_time;
/// Засечение начального времени
QueryPerformanceCounter(&_begin_time);
// Операция, время которой засекаем
QueryPerformanceCounter(&_end_time);
///Находим время в удобном формате
unsigned int millisecondsElapsed = (unsigned int) ( (_end_time.QuadPart /(double) _frequency_HRT.QuadPart -
_begin_time.QuadPart / ( double) _frequency_HRT.QuadPart) * 1000);
(pascal)прога для подсчета времени работы кода
Нужно программа для подсчета времени потраченного на выполнение моей программы в Free Pascal! Хорошо чтобы считала до долей секунды! Очень срочно!
Если внутри, то 2 замера времени в коде...
Если внешняя, то 2 варианта, оба не юзал
1. Через возврат результата глобальными функциями, используется в олимпиадном программировании, максимальная точность.
2. Через ожидание потока: твоя прога меряет время, запускает дочерний поток, дожидается его завершения, меряет время.
Цитата: Хильда
Нужно программа для подсчета времени потраченного на выполнение моей программы в Free Pascal! Хорошо чтобы считала до долей секунды! Очень срочно!
сессия ? сочуствую ) .
можно до такта процессора , но в многозадачных осях это не поможет .
Короче нужна программа как на олимпиадах по програмированию. А замер в начале и в конце проги вообще совпал! Надо что-то более мелкое брать, но я не знаю как! :( Подскажите пожалуйста!
зделай прогу с этой командой в начале и конце , сравни значения .
в чистом досе получиш время выполнения кода в тактах процессора .
Спасибо! Сейчас попробую!
Цитата: koderAlex
сессия ? сочуствую ) .
можно до такта процессора , но в многозадачных осях это не поможет .
можно до такта процессора , но в многозадачных осях это не поможет .
Можно QueryPerformanceCounter из WinAPI попробовать. Для замера очень коротких промежутков с высокой точностью.
P.S. До сессий мне ещё далеко...
Пожалуйста!!!
Пожалуйста!
Цитата: Хильда
Пожалуйста можно мне как полной дуре... написать код для Free! Потому что я не понимаю чего не нравится компилятору!!! =( Я понимаю, что это очень нагло попросить написать программу... но может кто-нибудь поможет???
Пожалуйста!
Пожалуйста!
Это функции и код из чистого API, а как его подключить к паскалю, не знаю:(
вот код для Free Pascal все сделал как у Zorkus'а
Код:
uses windows;
var freq_HRT, begin_time, end_time:int64;
begin
QueryPerformanceFrequency(freq_HRT);
QueryPerformanceCounter(begin_time);
// здесь выполняем то, время выполнения чего надо засеч
QueryPerformanceCounter(end_time);
writeln((end_time/freq_HRT - begin_time/freq_HRT)*1000);
readln;
end.
var freq_HRT, begin_time, end_time:int64;
begin
QueryPerformanceFrequency(freq_HRT);
QueryPerformanceCounter(begin_time);
// здесь выполняем то, время выполнения чего надо засеч
QueryPerformanceCounter(end_time);
writeln((end_time/freq_HRT - begin_time/freq_HRT)*1000);
readln;
end.
СПАСИБО! Особенно kosfiz! Ты меня спас!! =)