mierzenie czasu w ANSI C

0

ogólnie wiem, że takie tematy są często poruszane przeczytałem mnóstwo w necie i nadal nie znam odpowiedzi, więc postanowiłem sam założyć temat, więc do sedna sprawy:

Czy istnieje sposób na mierzenie czasu w języku ANSI C pod WINDOWSEM dokładniejszy od clock() ? ewentualnie linux też może być

Chodzi najlepiej o mikrosekundy, albo chociaż milisekundy.
Powtarzanie funkcji w forze odpada.

0

Do czego Ci to mierzenie czasu? Funkcja select() teoretycznie pozwala na odmierzenie czasu do mikrosekund, ale ona blokuje wykonanie procesu.

1

W [ms]: GetTickCount lub GetTickCount64.
Większa rozdzielczość: QueryPerformanceCounter - Retrieves the current value of the high-resolution performance counter.

0

no zmierzenie czasu wykonywania funckji, no ssprobowałem tego gettick count, ale nadal jest0 a to QueryPerformanceCounter w czystym c tez powinno pojsc ?
jak tego uzyc ?

0

no tyle, ze to nie wchodzi w gre, bo musialbym kopiowac tablice a to zajmie 1000 razy wiecej czasu niz ta funkcja ;///

0
 // szukanie cyklu Eulera w grafie
void euler_badanie(int n, int B[][n], int v, int *E,int *F, int stos, int stos1){
int i,y=0;
	for (i = 0;i < n;i++){
		if(B[v][i] == 1){

			B[v][i] = 0;
			B[i][v] = 0;
			stos++;
			E[stos] = i;
		//	printf("\n%d\n\n", E[stos]+1);
			//drukuj(n, B);
			euler_badanie(n,B,i,E,F,stos,stos1);
            y++;
		}}
		if(y==0){
        F[stos1]=v+1;
        stos1++;
        stos--;
        i=E[stos];
        if (stos!=0)
    euler_badanie(n,B,i,E,F,stos,stos1);


		}
}
start=GetTickCount;
euler_badanie(n, B, 0, E, F, stos, stos1);
stop=GetTickCount;
wynik=stop-start;
printf("\n CZAS dla EULERA: %d \n", wynik);
start=stop=0; 
0

Rozdzielczość zegara nie ma tak naprawdę większego znaczenia.

Problem należy po prostu sprowadzić z rzędu mikrosekund do całych sekund, albo nawet dziesiątek sekund (zwykle robi się to używając wielokrotnej pętli) i wtedy można zmierzyć czymkolwiek, nawet samemu patrząc na zegarek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1