Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit Zeitmessen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.09.2006, 11:16 Uhr
Frido



Moin.
Ich habe da ein Problem mit Zeitmessung.
Das Programm soll ein paar Rechnungen durchlaufen und dabei die Zeitmessen wie lang jede Rechenart braucht bis zur Lösung. Nun das Problem ist als Zeit bekomm ich nur Nullen. Egal ob Start- oder Endzeit.
Um di CPU Zeit zu Messen habe ich clock_t genommen.

Kann mir jemand helfen warum ich keine zeiten bekomme.


Code:
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <windows.h>

int main (int argc, char *argv[]){

    int i = 0;
    double Intervall_A = 0, Intervall_B = 2;
    double A = 0, B = 2, Cneu = 0, Calt = 0;
    double E = 0.00000000000001;            // 1*10^14
    clock_t Startzeit, Endzeit;
    double Zeit = 0;

    // Vorzeichenwechsel überprüfung
    if( ((pow(A,2) - 2) * (pow(B,2) - 2)) < 0 ){
        printf("Es gibt ein Vorzeichenwechsel.\nBisektion und Regula Falsi koennen angewandt werden.\n\n");
        i++;
    }
    else{
        printf("Es gibt kein Vorzeichenwechsel.\nBisektion und Regula Falsi koennen nicht angewandt werden.\n\n");
    }

    if( i == 1 ){
        // Bisektionsverfahren
        Startzeit = clock();
        do{
            Calt = Cneu;
            Cneu = (A + B) / 2;

            if( ((pow(A,2) - 2) * (pow(Cneu,2) - 2)) < 0 )
                B = Cneu;
            else
                A = Cneu;
            i++;
        }while(fabs(Calt - Cneu) > E);
        
        Endzeit = clock();
        Zeit = (double)((Endzeit - Startzeit));
        printf("Bisektions-Verfahren Ergebnis   : %1.14lf\n",Cneu);
        printf("Bisektion Schritte              : %i\n",i);
        printf("Bisektion Zeit                  : %1.50lf ms\n",Zeit);
        printf("Startzeit                       : %1.50lf ms\n",(double)Startzeit);
        printf("Endzeit                         : %1.50lf ms\n\n",(double)Endzeit);
        
        Cneu = 0;
        Calt = 0;
        A = Intervall_A;
        B = Intervall_B;
        i = 0;

        // Regula Falsi
        Startzeit = clock();
        do{
            Calt = Cneu;
            Cneu = A - (pow(A,2) - 2) * ((A - B) / ( (pow(A,2) - 2) - (pow(B,2) - 2) ));

            if( ((pow(A,2) - 2) * (pow(Cneu,2) - 2)) < 0 )
                B = Cneu;
            else
                A = Cneu;
            i++;
        }while(fabs(Calt - Cneu) > E);

        Endzeit = clock();
        Zeit = (double)((Endzeit - Startzeit));
        printf("Regula Falsi Ergebniss          : %1.14lf\n",Cneu);
        printf("Regula Falsi Schritte           : %i \n",i);
        printf("Regula Falsi Zeit               : %1.50lf ms\n",Zeit);
        printf("Startzeit                       : %1.50lf ms\n",(double)Startzeit);
        printf("Endzeit                         : %1.50lf ms\n\n",(double)Endzeit);
    }
    Calt = 0;
    Cneu = 0;
    A = Intervall_A;
    B = Intervall_B;
    i = 0;

    // Sekanten-Verfahren
    Startzeit = clock();
    do{
        if( ((pow(A,2) - 2) - (pow(B,2) - 2)) == 0 ){
            printf("Sekanten-Verfahren Abgebrochen, weil A == B. Daher Nenner 0.\n\n");
        }
        Calt = Cneu;

        Cneu = B - (pow(B,2) - 2) * ((B - A) / ( (pow(B,2) - 2) - (pow(A,2) - 2) ));
        A = B;
        B = Cneu;

        i++;

    }while(fabs(Calt - Cneu) > E);

    Endzeit = clock();
    Zeit = (double)((Endzeit - Startzeit));
    printf("Sekanten-Verfahren Ergebniss    : %1.14lf\n",Cneu);
    printf("Sekanten-Verfahren Schritte     : %i\n",i);
    printf("Sekanten-Verfahren Zeit         : %1.50lf ms\n",Zeit);
    printf("Startzeit                       : %1.50lf ms\n",(double)Startzeit);
    printf("Endzeit                         : %1.50lf ms\n\n",(double)Endzeit);
}



--
http://spielwelt14.monstersgame.net/?ac=vid&vid=28103555
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.09.2006, 16:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi clock liefert dir Millionstel - kein wunder das das dann 0 erzeugt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.09.2006, 17:41 Uhr
Frido



Das ist ja dann scheiße.
Und wie kann ich sehen wie lang das nun dauert.
Also wie kann ich das nun ausrechnen.

mfg
--
http://spielwelt14.monstersgame.net/?ac=vid&vid=28103555
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.10.2006, 00:43 Uhr
~Fr3Style
Gast


Du könntest das ganze mehrmals durchlaufen lassen, die Zeit davon messen und dann durch die Anzahl der loops teilen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.10.2006, 13:15 Uhr
Tron



Moin,

das Ergebnis Deiner Zeitmessung durch die in time.h definierte Konstante CLOCKS_PER_SEC dividieren.

Dann haste das in Sekunden.

Gruss Tron
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: