Frage eines absoluten Anfängers: Zeit einer Aufrufprozedur messen



  • Hi Leute,
    ich bin absoluter Anfänger, was das Programmieren angeht.
    Muss aber eine Funktion schreiben, die in client/server verbindung die -Zeit beim aufruf einer Methode misst und ausgibt.Sprich ein client sendet anfrage wie lange dauert es bis er eine antwort kriegt und umgekehrt. Habe das schon mit der ctime versucht, meldet mir aber ständig Fehler:"'CTime': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden"

    CTime theTime;
    CTime theTime = CTime::GetCurrentTime();
    

    habe ich vielleicht irgendwelche bibli nicht eingebunden?
    #include <ctime>
    #include <iostream> 😞
    das mit der clock funktioniert, bin damit aber nicht zufrieden
    std::cout<<clock()<<std::endl;

    was mache ich nur falsch. ein gutes beispiel wäre super.
    danke
    gost



  • dein Compiler kann die Klasse CTime nicht finden - diese gehört warhscheinlich zur MFC und nicht zum CPP Standard

    Hier eine Seite wie man Zeiten messen kann:
    http://www.pronix.de/pronix-630.html

    Unter Windows würde ich dir für genaue Zeitmessungen den PerformanceCounter empfehlen



  • vielen dank für den link:)
    wegen PerformanceCounter der ist für meine zwecke nicht geeignet.:(

    noch eine blöde Frage: gibt es vielleicht so einen befehl: wie getSystemTime oder so damit ich die differenz vom start und ende eines Aufrufen in nanosec oder mili berechnen kann? 😕
    Danke
    Gost



  • #include <mmsystem.h> // winmm.lib miteinbinden

    timeGetTime()



  • Gost schrieb:

    wegen PerformanceCounter der ist für meine zwecke nicht geeignet.:(

    Wieso? Passt doch.



  • Ich habe mal für das Zeitmessen eine Klasse programmiert, musst
    du evtl. noch für deine Zwecke anpassen: Zeitmessung

    Devil



  • groovemaster schrieb:

    Gost schrieb:

    wegen PerformanceCounter der ist für meine zwecke nicht geeignet.:(

    Wieso? Passt doch.

    weil es nicht fürs web gedacht ist, sondern für die middleware kommunikation durch client server, mit hilfe des ORBs



  • Gost schrieb:

    weil es nicht fürs web gedacht ist, sondern für die middleware kommunikation durch client server, mit hilfe des ORBs

    😕
    Die QueryPerformance... Funktionen sind überall dort verfügbar, wo Windows läuft. Und dafür sind sie ja auch gedacht. Wo du diese einsetzt, spielt dabei keine Rolle. Das Einzige was du beachten musst, ist die hardwareseitige Verfügbarkeit dieser Counter. Das dies bei dir nicht so ist, kann man der Frage aber nicht entnehmen.
    timeGetTime ist letztendlich auch nichts anderes, mit dem Unterschied, dass du eine geringere Auflösung hast, aber dafür keine speziellen Hardware Counter brauchst.
    Wenn du was plattformunabhängiges suchst, dann bleibt dir nur clock. Oder bedingte Kompilierung.



  • groovemaster schrieb:

    Wenn du was plattformunabhängiges suchst, dann bleibt dir nur clock. Oder bedingte Kompilierung.

    genau so ist es... 😞

    die clock() Funktion misst die Zeit
    (float)(prgende-prgstart)/CLOCKS_PER_SEC)
    in milisec
    😕 wie kriege ich kleinere Auflösung z.b. in nanosec??

    Danke im voraus



  • Ich glaube die thoretisch kleinstmögliche Auflösung ist 1sec/FSB, da wirst du aber nie ran kommen. Zu was braucht man so was?



  • RDTSC afaik auch gehen, oder nicht 😕


Log in to reply