Czas działania programu.

0
  1. Czy istnieją jakieś instrukcje bądź nawet zewnętrzne narzędzia, do zmierzenia szybkości działania programu? Nadmienię, że chodziłoby tu o dość dużą dokładność: [µs], a nawet [ns].
  2. Konkretnie chodzi mi o to: która instrukcja wykona się szybciej: puts czy puts2?
#include <stdio.h>
void puts2(char tab[],unsigned long size)
{
    unsigned long a;
    for(a = 0; a < size; a = a + 1)
        putchar_unlocked(tab[a]);
    putchar_unlocked(10);
}
int main()
{
    const char x [] = {"Hello World!"};
    const unsigned long s = sizeof(x);
    int i, j = 10000;
    
    //for(i = 0; i < j; i = i + 1) 
        puts(x);
    //for(i = 0; i < j; i = i + 1)
        puts2("Hello World!", s);
    return(0);
}

Próbowałem to zapętlać jak na komentarzach i sprawdzić na ideone, ale to nie jest najlepsza metoda...

0
ozonowy napisał(a):
  1. Czy istnieją jakieś instrukcje bądź nawet zewnętrzne narzędzia, do zmierzenia szybkości działania programu? Nadmienię, że chodziłoby tu o dość dużą dokładność: [µs], a nawet [ns].

Nie wiem czy badanie wydajnosci funkcji w ten sposob jest miarodajne. Moim zdaniem powinno sie wywolac funkcje np. 1000 razy i wynik usrednic. Aby zmierzyc czas wykonywania jakiegos kodu mozesz uzyc funkcji "clock" z jezyka C, cos na wzor:

 
time_t start, stop;
double czas;
start = clock();
//..tu testowany fragment kodu
stop = clock();
czas = (stop-start)/(double)CLOCKS_PER_SECS; 

W zmiennej "czas" bedziesz mial wynik w sekundach (co nie znaczy, ze z dokladnoscia do sekundy). Troche lepszym (pod wzgledem dokladnosci) odpowiednikiem funkcji "clock" moze okazac sie para funkcji: QueryPerformanceCounter i QueryPerformanceFrequency. Niestety sa to funkcje zalezne od platformy Windows. Bardziej dokladnych funkcji nie znam.

ozonowy napisał(a):
  1. Konkretnie chodzi mi o to: która instrukcja wykona się szybciej: puts czy puts2?

Zgaduje: puts bedzie szybsze.

0

Te zewnętrzne narzędzia nazywają się profilery. http://en.wikipedia.org/wiki/Profiling_(computer_programming)

0

Ja mam inne pytanie. Po co ci to? Prawie na 100% jestem pewien, że puts będzie szybsze oraz, że to nie ma najmniejszego sensu.

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