powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как определить время выполнения функции
10 сообщений из 10, страница 1 из 1
как определить время выполнения функции
    #34077161
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в PHP для этого есть функция microtime(),
может кто знает есть ли в С++ чтото похожее?
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34077192
Programister0в PHP для этого есть функция microtime(),
может кто знает есть ли в С++ чтото похожее?
Совет от "дяди Билла":
MSDN Help
clock
Calculates the processor time used by the calling process.

clock_t clock( void );

Routine Required Header Compatibility
clock <time.h> ANSI, Win 95, Win NT


For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version


Return Value

clock returns the number of clock ticks of elapsed processor time. The returned value is the product of the amount of time that has elapsed since the start of a process and the value of the CLOCKS_PER_SEC constant. If the amount of elapsed time is unavailable, the function returns –1, cast as a clock_t.

Remarks

The clock function tells how much processor time the calling process has used. The time in seconds is approximated by dividing the clock return value by the value of the CLOCKS_PER_SEC constant. In other words, clock returns the number of processor timer ticks that have elapsed. A timer tick is approximately equal to 1/CLOCKS_PER_SEC second. In versions of Microsoft C before 6.0, the CLOCKS_PER_SEC constant was called CLK_TCK.

Example
Код: 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.
/* 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 );

void main( void )
{
   long    i = 600000L;
   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() )
      ;
}

Output

Delay for three seconds
Done!
Time to do 600000 empty loops is 0.1 seconds

Time Management Routines
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34077277
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разницей времени после выполнения функции и до.
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34077538
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
благодарю за оперативный ответ, функция работает но немного немного нетак как хотелось бы, может есть ф-я по точне,
т.к.
например после вып-я программы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
clock_t start, finish;
int i= 1   000   000 ;
start = clock();
  while(i--);
finish = clock();
float x=(finish-start)/ CLOCKS_PER_SEC;

    i= 8   000   000 ;
start = clock();
  while(i--);
finish = clock();
float y=(finish-start)/ CLOCKS_PER_SEC;

x=0;
y=0.014;
точность всего 3 знака после ,
вообще это мелочь, но выполнять в цикле функции которые я хочу проверить неполучается,
загрузив проц парой архиваторов - значения получаются теже может кто знает программы для эмуляции слабых машин или это уже бред.
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34077580
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programister0благодарю за оперативный ответ, функция работает но немного немного нетак как хотелось бы, может есть ф-я по точне,


gettimeofday - микросекунды.
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34077636
&lt;&gt;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
QueryPerformanceCounter - в циклах внутреннего таймера (для windows)
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34077682
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пишу на Билдере 6.0
gettimeofday
а он говорит что незнает такой ф-ии в его НЕLРЕ про неё ничего нет.
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34077747
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programister0Я пишу на Билдере 6.0
gettimeofday
а он говорит что незнает такой ф-ии в его НЕLРЕ про неё ничего нет.

Может и нет. Попробуй подключить <sys\time.h>
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34078517
ska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programister0Я пишу на Билдере 6.0
gettimeofday
а он говорит что незнает такой ф-ии в его НЕLРЕ про неё ничего нет.

В виндозе нету (не знаю как у билдера).
можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#ifdef WIN32
struct tms {
	__int64	tms_utime;
	__int64	tms_stime;
};
int times(tms * t) {
	__int64 K, U, CT, ET;
	GetProcessTimes(GetCurrentProcess(), (FILETIME *)&CT, (FILETIME *)&ET, (FILETIME *)&K, (FILETIME *)&U);
	t->tms_stime = K/ 10 ;			// microseconds !!!
	t->tms_utime = U/ 10 ;			// microseconds !!!
	return GetTickCount() *  1000 ;	// microseconds !!!
}
// We are changing the default millisecond-based CLK_TCK to microseconds
//	for more precise CPU time measurement
#undef CLK_TCK
#define CLK_TCK  1000000 
#endif	// WIN32
...
Рейтинг: 0 / 0
как определить время выполнения функции
    #34078525
ska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ska
можно так:

Но вообще эт тоже неточный. Guest ответил - QueryPerformanceCounter
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как определить время выполнения функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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