Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2010, 14:49   #1
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость Затрата времени

как получить затрату времени на выполнение некоторой фунции или процедуры?
Пример
Я хочю заполнить одномерный массив размером 100 ел, как узнать сколько оно займет времени?
ЗЫ:предпологаю, что где то в system есть функа типо GetTime...

Последний раз редактировалось Lemo; 04.02.2010 в 14:52.
Lemo вне форума Ответить с цитированием
Старый 04.02.2010, 14:56   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

gettickcount самое простое, засек, запустил, вычел.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.02.2010, 15:45   #3
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

GetTickCount очень не точен, может давать погрешность до 20 мсек на один вызов. Для замера времени выполнения кода лучше использовать либо QueryPerformanceCounter вместе с QueryPerformaceFrequency, либо GetThreadTimes.
maxionans вне форума Ответить с цитированием
Старый 04.02.2010, 22:54   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Вот работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
    i               : integer;
    x               : extended;
    c1, c2          : int64;
    freq            : int64;
begin
    x := random;

    QueryPerformanceCounter(c1);

    //Ваша функция//
    for i := 0 to 10000000 do x :=  sin(x)*sin(exp(abs(x)));
    //Конец//

    QueryPerformanceCounter(c2);

    QueryPerformanceFrequency(freq);
    if freq <> 0 then begin
        x := (c2 - c1) / freq;
        ShowMessage(format('%3.10f Sec', [x]));
    end;
end;
з.ы. кстати, заметил что это мой 800й пост...
Будь проще и люди к тебе потянутся

Последний раз редактировалось spamer; 04.02.2010 в 22:57.
spamer вне форума Ответить с цитированием
Старый 05.02.2010, 12:37   #5
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

СПС за помощь!
ЗЫ всем хотел кинуть в репу, но получилось только 1=(
Lemo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение времени POX Общие вопросы Delphi 10 01.07.2009 08:27
задержка времени Crasty Помощь студентам 6 26.01.2009 18:55
Отсчет времени в С Raptor Помощь студентам 13 29.12.2007 16:32
Машина времени BETONOMESHALKA Общие вопросы Delphi 4 23.12.2007 23:44