Zeitmessung



  • net schrieb:

    joomoo schrieb:

    The clock() function returns the processor time since the program started, or -1 if that information is unavailable.

    du wolltest wohl '...or -1 if that information is unavailable' fett schreiben?

    Ne, eigentlich nicht. Wieso denn auch?

    mfg.



  • joomoo schrieb:

    net schrieb:

    joomoo schrieb:

    The clock() function returns the processor time since the program started, or -1 if that information is unavailable.

    du wolltest wohl '...or -1 if that information is unavailable' fett schreiben?

    Ne, eigentlich nicht. Wieso denn auch?

    das würde erklären warum sein proggi immer 0 ausspuckt...



  • net schrieb:

    joomoo schrieb:

    net schrieb:

    joomoo schrieb:

    The clock() function returns the processor time since the program started, or -1 if that information is unavailable.

    du wolltest wohl '...or -1 if that information is unavailable' fett schreiben?

    Ne, eigentlich nicht. Wieso denn auch?

    das würde erklären warum sein proggi immer 0 ausspuckt...

    Das mit der Prozessorzeit auch: Beim Warten auf eine Eingabe macht die CPU was anderes.

    mfg.



  • joomoo schrieb:

    Das mit der Prozessorzeit auch: Beim Warten auf eine Eingabe macht die CPU was anderes.

    das ist doch wumpe. die zeit läuft trotzdem weiter.



  • net schrieb:

    joomoo schrieb:

    Das mit der Prozessorzeit auch: Beim Warten auf eine Eingabe macht die CPU was anderes.

    das ist doch wumpe. die zeit läuft trotzdem weiter.

    Aber clock() gibt nur die Zeit zurück die der CPU mit dem Programm verbringt (oder wie man das nennen mag).

    mfg.



  • joomoo schrieb:

    Aber clock() gibt nur die Zeit zurück die der CPU mit dem Programm verbringt (oder wie man das nennen mag).

    ja, aber clock() startet bei 0 und während das programm auf user-input wartet läuft die zeit trotzdem weiter. hab das programm des threadstarters eben bei mir ausprobiert: es funzt.



  • Also, auf meinem System (Debian Sarge, g++ 3.3.5) funktioniert das Programm, d.h., wenn ich gleich etwas eingebe, kommt etwa 1 raus, wenn ich ein bisschen warte, etwas Hoeheres.



  • net schrieb:

    joomoo schrieb:

    Aber clock() gibt nur die Zeit zurück die der CPU mit dem Programm verbringt (oder wie man das nennen mag).

    ja, aber clock() startet bei 0 und während das programm auf user-input wartet läuft die zeit trotzdem weiter. hab das programm des threadstarters eben bei mir ausprobiert: es funzt.

    Nein, tut es offenbar beim OP nicht. joomoo erklärt den Effekt schon richtig. clock zählt die vom Programm verbrauchte Prozessorzeit (bzw. lt. Norm deren beste Approximation), die auf einem multithread-fähigen System nichts mit der vergangen Zeit zu tun haben braucht (außer, daß sie kleiner ist). Für die Zuteilung der einzelnen Programme ist ein Scheduler verantwortlich. Der sagt im wesentlichen: "oh, das Programm von net wartet immer noch auf Usereingabe, dann kann ich in der Zeit ja weiter E-Mails abrufen und dann noch kurz die Videos weiterrandern und dann guck ich nochmal vorbei".

    Man kann mit clock nur sinnvoll Laufzeiten messen, wenn dazwischen wirklich was passiert, nicht, wenn dazwischen das Programm technisch gesehen gar nicht 'läuft', wie zB bei Usereingaben.

    Unter Unix kann mit time(1) auch die unterschiedlichen Zustandzeiten im Programm vermessen:

    de~ $ cat t.c
    #include <stdio.h>
    #include <time.h>
    int main() { clock_t t = clock(); int dummy; scanf("%d", &dummy); printf("%g", (double)(clock()-t)/CLOCKS_PER_SEC); }
    de~ $ gcc t.c -o t
    de~ $ time ./t
    42
    0
    real    0m5.176s
    user    0m0.001s
    sys     0m0.002s
    


  • Daniel E. schrieb:

    net schrieb:

    joomoo schrieb:

    Aber clock() gibt nur die Zeit zurück die der CPU mit dem Programm verbringt (oder wie man das nennen mag).

    ja, aber clock() startet bei 0 und während das programm auf user-input wartet läuft die zeit trotzdem weiter. hab das programm des threadstarters eben bei mir ausprobiert: es funzt.

    Nein, tut es offenbar beim OP nicht...

    das würde ja bedeuten, dass clock() sich systemabhängig verhält. igitt, und das ist eine standard library funktion. ich glaub ich werd' zum c-hasser...



  • Ok, vielen Dank für die Hinweise.


Anmelden zum Antworten