Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

время, затрачиваемое на выполнение процедуры или ф-ии   Найти похожие ветки 

 
zxcv   (2006-02-22 14:58) [0]

подскажите как узнать время, затрачиваемое
на выполнение процедуры или ф-ии


 
McSimm ©   (2006-02-22 15:01) [1]

запомнить время до выполнения
вычесть из времени после выполнения


 
zxcv   (2006-02-22 15:03) [2]

логично,
а как текущее время получить?


 
Alkid ©   (2006-02-22 15:07) [3]

Функция Now.
Но она может иметь слишком низкое разрешение для твоих нужд,
Смотри функции
QueryPerformanceCounter
QueryPerformanceFrequence


 
vidiv ©   (2006-02-22 15:15) [4]

GetTickCount()


 
vidiv ©   (2006-02-22 15:23) [5]

uses ..., Windows,...
...
var time:dword;
...
time := GetTickCount();
... YouFunction(...);
time := GetTickCount() - time;

после этого в time у тебя время выполнения функции в 1/1000 частях секунды.

Есть один ньюанс: После, примерно, 49 дней и 17 часов непрерывной работы компьютера счетчик, используемый функцией GetTickCount сбрасывается на ноль. Что может повлечь за собой неадэкватный результат. Поэтому данный способ годится только для отладки :) Если функция достаточно быстра, т.е. однозначно выполняется быстрее чем 49 дней, то можно использовать следующую поправку.

uses ..., Windows,...
...
var time:dword;
...
time := GetTickCount();
... YouFunction(...);
time := GetTickCount() - time;
if time<0 then time := 4294967295 + time;

где 4294967295 = (2^32-1) = максимальное значение счетчика.

Мой пост - это не истина в последней инстанции, а лишь мое осознание действительности! Так что прошу не судить строго!


 
vidiv ©   (2006-02-22 15:30) [6]


> а лишь мое осознание действительности

Вот нашел ошибку, уже после нажатия кнопки "Отправить"

dword не может принимать отрицательные значения, поэтому можно сделать следующую поправку:

uses ..., Windows,...
...
var time1, time2:dword;
...
time1 := GetTickCount();
... YouFunction(...);
time2 := GetTickCount();
if time1>time2 then
   time1 := 4294967295 - time1 + time2
else
   time1 := time2 - time1;

результат в time1



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.017 c
2-1140595862
Валерий
2006-02-22 11:11
2006.03.12
Добавление формы из Builder


10-1115197863
Phenix2005
2005-05-04 13:11
2006.03.12
Встраивание Excel в форму приложения


11-1118770848
Владимир Кладов
2005-06-14 21:40
2006.03.12
Новая версия


15-1139842073
Хинт
2006-02-13 17:47
2006.03.12
Программа для сравнения файлов


1-1139233538
parovoZZ
2006-02-06 16:45
2006.03.12
Файл во временную папку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский