таймер выполнения функции
От: asmodey  
Дата: 04.12.02 10:01
Оценка:
Есть функция по сортировке массива, что то вроде
void MyFunc (int *a, int b)
{
   //начать отсчет времени
  do{

     for ()
         {
        if
         } 
    }while ()
  //закончить отсчет времени и отобразить в Lebel
    Label->Caption=time; 
}


Какой функцией для этого воспользоваться и вообше реализовать в C++?
Re: таймер выполнения функции
От: UgN  
Дата: 04.12.02 10:07
Оценка:
Здравствуйте, asmodey, Вы писали:

Смотри в сторону функций QueryPerformanceFrequency и QueryPerformanceCounter;

Примерно так:
A>
A>void MyFunc (int *a, int b)
A>{

A>   //начать отсчет времени
     QueryPerformanceCounter( &Start );
A>  do{

A>     for ()
A>         {
A>        if
A>         } 
A>    }while ()

      QueryPerformanceCounter( &Stop );
      QueryPerformanceFrequency( &Freq );
      time = ( Stop - Start ) / Freq;

A>  //закончить отсчет времени и отобразить в Lebel
A>    Label->Caption=time; 
A>}
A>
Re: таймер выполнения функции
От: Vsim  
Дата: 04.12.02 10:28
Оценка:
Здравствуйте, asmodey, Вы писали:

A>Есть функция по сортировке массива, что то вроде

A>
A>void MyFunc (int *a, int b)
A>{
A>   //начать отсчет времени
A>  do{

A>     for ()
A>         {
A>        if
A>         } 
A>    }while ()
A>  //закончить отсчет времени и отобразить в Lebel
A>    Label->Caption=time; 
A>}
A>


A>Какой функцией для этого воспользоваться и вообше реализовать в C++?


Если в секундах то можно так:
#include <time.h>
.....
struct tm *datetime;
time_t lTime;
int Start,End;
.........
void MyFunc (int *a, int b)
{
time(&lTime);
datetime = localtime(&lTime);
Start=datetime->tm_sec;
A> do{

A> for ()

A> {
A> if
A> }
A> }while ()
time(&lTime);
datetime = localtime(&lTime);
End=datetime->tm_sec;

Label->Caption=AnsiString(End-Start)+" секунд";
Re[2]: таймер выполнения функции
От: asmodey  
Дата: 04.12.02 10:31
Оценка:
Здравствуйте, UgN, Вы писали:

UgN>Здравствуйте, asmodey, Вы писали:


UgN>Смотри в сторону функций QueryPerformanceFrequency и QueryPerformanceCounter;


UgN>Примерно так:

A>>
A>>void MyFunc (int *a, int b)
A>>{

A>>   //начать отсчет времени
UgN>     QueryPerformanceCounter( &Start );
A>>  do{

A>>     for ()
A>>         {
A>>        if
A>>         } 
A>>    }while ()
UgN>
UgN>      QueryPerformanceCounter( &Stop );
UgN>      QueryPerformanceFrequency( &Freq );
UgN>      time = ( Stop - Start ) / Freq;
UgN>
A>>  //закончить отсчет времени и отобразить в Lebel
A>>    Label->Caption=time; 
A>>}
A>>


UgN>


Два вопроса: 1)"Stop, Start, Freq" переменные какого типа? и 2)нужно ли подключать .h-файл и если да то какой?
Re[3]: таймер выполнения функции
От: UgN  
Дата: 04.12.02 10:37
Оценка:
Здравствуйте, asmodey, Вы писали:

A>Два вопроса: 1)"Stop, Start, Freq" переменные какого типа? и 2)нужно ли подключать .h-файл и если да то какой?


1) RTFM. 2) Windows.h
Re[2]: таймер выполнения функции
От: asmodey  
Дата: 04.12.02 10:56
Оценка: -1
Здравствуйте, Vsim, Вы писали:

V>Здравствуйте, asmodey, Вы писали:


A>>Есть функция по сортировке массива, что то вроде

A>>
A>>void MyFunc (int *a, int b)
A>>{
A>>   //начать отсчет времени
A>>  do{

A>>     for ()
A>>         {
A>>        if
A>>         } 
A>>    }while ()
A>>  //закончить отсчет времени и отобразить в Lebel
A>>    Label->Caption=time; 
A>>}
A>>


A>>Какой функцией для этого воспользоваться и вообше реализовать в C++?


V>Если в секундах то можно так:

V>#include <time.h>
V>.....
V>struct tm *datetime;
V>time_t lTime;
V>int Start,End;
V>.........
V>void MyFunc (int *a, int b)
V>{
V> time(&lTime);
V> datetime = localtime(&lTime);
V> Start=datetime->tm_sec;
A>> do{

A>> for ()

A>> {
A>> if
A>> }
A>> }while ()
V> time(&lTime);
V> datetime = localtime(&lTime);
V> End=datetime->tm_sec;

Label->>Caption=AnsiString(End-Start)+" секунд";

Спасибо! но скажи как сделать чтоб считал в милисекундах
Re[2]: таймер выполнения функции
От: Михаил Челноков Украина  
Дата: 04.12.02 13:18
Оценка:
Здравствуйте, UgN, Вы писали:

UgN>Смотри в сторону функций QueryPerformanceFrequency и QueryPerformanceCounter;


UgN>Примерно так:

A>>
A>>   //начать отсчет времени
UgN>     QueryPerformanceCounter( &Start );
A>>  do{
A>>    }while ()
UgN>
UgN>      QueryPerformanceCounter( &Stop );
UgN>      QueryPerformanceFrequency( &Freq );
UgN>      time = ( Stop - Start ) / Freq;
UgN>
A>>  //закончить отсчет времени и отобразить в Lebel
A>>    Label->Caption=time; 
A>>


Если в процессе работы произойдет переключение потоков, то полученное значение не будет правильным.
В-прочем, я сомневаюсь, что для такой задачи это критично...
Re[3]: таймер выполнения функции
От: Михаил Челноков Украина  
Дата: 04.12.02 13:23
Оценка:
Здравствуйте, Михаил Челноков, Вы писали:

МЧ>Если в процессе работы произойдет переключение потоков, то полученное значение не будет правильным.

МЧ>В-прочем, я сомневаюсь, что для такой задачи это критично...

Да, забыл добавить что для получения суперточного значения можно воспользоваться функцией GetThreadTimes (for NT-based systems only!).
Re[3]: таймер выполнения функции
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 04.12.02 13:29
Оценка: -1
Здравствуйте, asmodey, Вы писали:

[]

A>Спасибо! но скажи как сделать чтоб считал в милисекундах


Нолик — за оверквотинг. А по существу — в одной секунде 1000 миллисекунд... Намек прозрачен?
Re[4]: таймер выполнения функции
От: Denn  
Дата: 04.04.03 17:55
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Нолик — за оверквотинг. А по существу — в одной секунде 1000 миллисекунд... Намек прозрачен?


Нолик, за то что не разобравшись нули лепишь.

localtime возвращает время с точностью до секунд, поэтому в миллисекундах мерять с ее помощью не удасться.

asmodey _ftime меряет с миллисекундами. Также читай про QueryPerformanceCounter и QueryPerformanceFrequency RTFM — читай документацию. А в целом ноль заслуженный — нечего спрашивать то, что легко самому можно решить.
Re[4]: таймер выполнения функции
От: Аноним  
Дата: 04.04.03 21:16
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, asmodey, Вы писали:


F>[]


A>>Спасибо! но скажи как сделать чтоб считал в милисекундах


F>Нолик — за оверквотинг. А по существу — в одной секунде 1000 миллисекунд... Намек прозрачен?


Регестрироватся не хочу — но свое фи выскажу Человек на пирядки меньше тебя сообщений написал, а ты ему ноль ставишь не хорошо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.