Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / функции time / 19 сообщений из 19, страница 1 из 1
05.09.2006, 23:18
    #33966659
Grunge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
как задать переменной типа t_time значение в 1 секунду?
//дело в том, что нужно узнать сколько тех или иных операций производится за секунду
...
Рейтинг: 0 / 0
06.09.2006, 00:21
    #33966688
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
Код: plaintext
1.
2.
time_t t;
t= 1 ;
...
Рейтинг: 0 / 0
06.09.2006, 00:53
    #33966710
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
clock_t t;
CLOCK_PER_SEC

подробностей не помню, гляньте хелп. Но лучше использовать таймер.
...
Рейтинг: 0 / 0
06.09.2006, 02:21
    #33966733
Grunge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
2 nikname
быть может у вас есть исходник? ато я никак не возьму в толк как отпределить интервал в одну секунду между выполнением операции...
...
Рейтинг: 0 / 0
06.09.2006, 09:55
    #33967022
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
Grunge2 nikname
быть может у вас есть исходник? ато я никак не возьму в толк как отпределить интервал в одну секунду между выполнением операции...

Обычно я использую gettimeofday, если нельзя тормозить процесс (например, вычисление таймаутов).
...
Рейтинг: 0 / 0
06.09.2006, 13:13
    #33967815
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
// crt_clock.c
/* This example prompts for how long
 * the program is to run and then continuously
 * displays the elapsed time for that period.
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void sleep( clock_t wait );

int main( void )
{
   long    i = 6000000L;
   clock_t start, finish;
   double  duration;

   /* Delay for a specified time. */
   printf( "Delay for three seconds\n" );
   sleep( (clock_t) 3  * CLOCKS_PER_SEC );
   printf( "Done!\n" );

   /* Measure the duration of an event. */
   printf( "Time to do %ld empty loops is ", i );
   start = clock();
   while( i-- ) 
      ;
   finish = clock();
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "%2.1f seconds\n", duration );
}

/* Pauses for a specified number of milliseconds. */
void sleep( clock_t wait )
{
   clock_t goal;
   goal = wait + clock();
   while( goal > clock() )
      ;
}
...
Рейтинг: 0 / 0
06.09.2006, 13:42
    #33967922
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
Сомневаюсь в точности такого таймера в ОС отличных от ДОС, в силу их многозадачности.

Кстати, в линухах, думаю, что очень часто это будет работать правельно, т.к. такие циклы блокируют все процессы и потоки системы. Но опять же не факт.
...
Рейтинг: 0 / 0
06.09.2006, 13:44
    #33967929
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
AkhСомневаюсь в точности такого таймера в ОС отличных от ДОС, в силу их многозадачности.

Кстати, в линухах, думаю, что очень часто это будет работать правельно, т.к. такие циклы блокируют все процессы и потоки системы. Но опять же не факт.
Не сомневайтесь - хреново там с точностью. Но спрашивали про time_t.
...
Рейтинг: 0 / 0
06.09.2006, 17:15
    #33968814
Grunge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
nikname
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
// crt_clock.c
/* This example prompts for how long
 * the program is to run and then continuously
 * displays the elapsed time for that period.
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void sleep( clock_t wait );

int main( void )
{
   long    i = 6000000L;
   clock_t start, finish;
   double  duration;

   /* Delay for a specified time. */
   printf( "Delay for three seconds\n" );
   sleep( (clock_t) 3  * CLOCKS_PER_SEC );
   printf( "Done!\n" );

   /* Measure the duration of an event. */
   printf( "Time to do %ld empty loops is ", i );
   start = clock();
   while( i-- ) 
      ;
   finish = clock();
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "%2.1f seconds\n", duration );
}

/* Pauses for a specified number of milliseconds. */
void sleep( clock_t wait )
{
   clock_t goal;
   goal = wait + clock();
   while( goal > clock() )
      ;
}

да, я видел этот код. но дело в том, что здесь останавливается выполнение программы на заданное число секунд (3 * CLOCKS_PER_SEC). мне же надо производить операции (к примеру сложение) на протяжении определённого периода времени (1 * CLOCKS_PER_SEC), и получить общее число этих самых процессов
...
Рейтинг: 0 / 0
06.09.2006, 23:41
    #33969502
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
Попробуйте выполнить какое-то большое количество процессов.

double ProcPerSec = 1000000;
clock_t start=clock();
Do1000000();
cout<<1000000./(clock()-start)*CLOCK_PER_SEC
...
Рейтинг: 0 / 0
07.09.2006, 01:16
    #33969548
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
Grungeмне же надо производить операции (к примеру сложение) на протяжении определённого периода времени (1 * CLOCKS_PER_SEC), и получить общее число этих самых процессов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#define TIMEOUT_IN_SECONDS  100 
time_t t;
int i;

i =  0 ;
t = time( 0 );
while( (time( 0 ) - t) < TIMEOUT_IN_SECONDS ) {
  i++;
  // еще какая-нибудь глупость
}
printf ("Цикл сделал %d итераций за %d секунд\n", i, TIMEOUT_IN_SECONDS);
...
Рейтинг: 0 / 0
07.09.2006, 09:42
    #33969813
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
White Owl...

:) Большой процент времени уйдет на определение этого времени.
...
Рейтинг: 0 / 0
07.09.2006, 19:11
    #33972270
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
Akh White Owl...
:) Большой процент времени уйдет на определение этого времени.Пусть сначала с этим разберется.

Потом подрастет, переползет на РТОС и будет там создавать отдельные таймеры тормозящие считающий поток в точно заданую миллисекунду. Но для такого Grunge прийдется еще мноооого книжек прочитать :)
...
Рейтинг: 0 / 0
08.09.2006, 09:54
    #33972924
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
White Owl Akh White Owl...
:) Большой процент времени уйдет на определение этого времени.Пусть сначала с этим разберется.

Потом подрастет, переползет на РТОС и будет там создавать отдельные таймеры тормозящие считающий поток в точно заданую миллисекунду. Но для такого Grunge прийдется еще мноооого книжек прочитать :)

Самое главное, что меня смущает (на примере линукса) - если поток не падает в айдле хоть иногда, то он может зарубить систему. Тогда про таймеры, вообще, нельзя висти речи.

Мне кажется, что наиболее верное решение задачи: при запуске программы сделать замеры, за сколько время выполнится определенное количество операций, потом настроить параметры и работать без всяких таймеров.
...
Рейтинг: 0 / 0
08.09.2006, 18:28
    #33975192
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
AkhСамое главное, что меня смущает (на примере линукса) - если поток не падает в айдле хоть иногда, то он может зарубить систему. Тогда про таймеры, вообще, нельзя висти речи.Эээээ? Кто-то что-то пальцезаплетающее пил :)

AkhМне кажется, что наиболее верное решение задачи: при запуске программы сделать замеры, за сколько время выполнится определенное количество операций, потом настроить параметры и работать без всяких таймеров.Нет, если программа должна синхронизироваться по времени, то без таймеров не обойтись.
Как бы точно ты ни пытался замерять скорость работы - ты никогда не добьешся идеальной точности. Хотя бы потому, что во всех современных системах на железячном уровне существуют прерывания, которые могут влезть между двумя любыми командами твоей вывереной по тактам программы и заморозить твою программу на любой период.
...
Рейтинг: 0 / 0
08.09.2006, 19:28
    #33975308
Grunge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
White Owl Grungeмне же надо производить операции (к примеру сложение) на протяжении определённого периода времени (1 * CLOCKS_PER_SEC), и получить общее число этих самых процессов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#define TIMEOUT_IN_SECONDS  100 
time_t t;
int i;

i =  0 ;
t = time( 0 );
while( (time( 0 ) - t) < TIMEOUT_IN_SECONDS ) {
  i++;
  // еще какая-нибудь глупость
}
printf ("Цикл сделал %d итераций за %d секунд\n", i, TIMEOUT_IN_SECONDS);

вот это именно то, что мне надо! но видно какая-то проблема в цикле, не выводится колличество итераций, которые, наверное, и не происходят.
...
Рейтинг: 0 / 0
09.09.2006, 21:40
    #33976091
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
AkhСамое главное, что меня смущает (на примере линукса) - если поток не падает в айдле хоть иногда, то он может зарубить систему.бедный линух. Сочувствую

White OwlКак бы точно ты ни пытался замерять скорость работы - ты никогда не добьешся идеальной точности. Хотя бы потому, что во всех современных системах на железячном уровне существуют прерывания, которые могут влезть между двумя любыми командами твоей вывереной по тактам программы и заморозить твою программу на любой период.и они не могут влезть точно перед вызовом таймера и снова заморозить всё на любой период?
...
Рейтинг: 0 / 0
09.09.2006, 23:09
    #33976135
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
maXmoи они не могут влезть точно перед вызовом таймера и снова заморозить всё на любой период?Могут. Так что единственный способ получить один миллиард однотактовых операций на гигагерцовом процессоре это сделать компьютер без единого контроллера прерываний :)
...
Рейтинг: 0 / 0
10.09.2006, 22:11
    #33976784
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функции time
если система разрешит (а она не разрешит), можно сделать cli
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / функции time / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]