Was ist schneller?



  • Hi, welche der beiden Methoden ist schneller:

    1. Methode:

    int Grenze1=10;
    int Grenze2=20;
    
    for(int i=0;i<Grenze1;i++)
    {
    //Mache Grenze1 Sachen
    }
    
    for(int i=0;i<Grenze2;i++)
    {
    //Mache Grenze2 Sachen
    }
    

    2.Methode:

    int Grenze1=10;
    int Grenze2=20;
    int Obergrenze;
    
    if(Grenze1<Grenze2) Obergrenze=Grenze2;
    else Obergrenze=Grenze1;
    
    for(int i=0;i<Obergrenze;i++)
    {
    if(i<Grenze1)
    {
    //Mache Grenze1 Sachen
    }
    if(i<Grenze2)
    {
    //Mache Grenze2 Sachen
    }
    }
    


  • Mach das ganze 100 000 Mal, und checke die verbrauchte Zeit 🙂



  • ups, sollte wohl heißen

    int Grenze1=10;
    int Grenze2=20;
    int Obergrenze;
    
    if(Grenze1<Grenze2) Obergrenze=Grenze2;
    else Obergrenze=Grenze1;
    
    for(int i=0;i<Obergrenze;i++)
    {
    if(i<Grenze1)
    {
    //Mache eine Grenze1 Sache
    }
    if(i<Grenze2)
    {
    //Mache eine Grenze2 Sache 
    }
    
    //Mache das Obergrenze-mal
    }
    

    Auf jedenfall sind deine 2 beispiele nicht dasselbe und daher so sinnvoll wie

    Was braucht länger:

    int x = 3+21;
    //oder
    int y = pow(3,21);
    

    Wenn die Reihenfolge aber zufällig mal egal sein soll, so denke ich, ist #1 besser



  • ich wuerde den folgenden vorschlag machen, der funktioniert allerdings nur wenn die grenzen von vornherein fest liegen:

    int Grenze1=10;
    int Grenze2=20;
    int i;
    
    for(i=0;i<Grenze1;i++)
    {
    //Mache Grenze1 Sachen
    //Mache Grenze2 Sachen 1.Teil
    }
    
    for(i;i<Grenze2;i++)
    {
    //Mache Grenze2 Sachen 2.Teil
    }
    

    Wie gesagt, das funktioniert nur wenn eine grenze immer >= der anderen ist



  • Original erstellt von davie:
    **
    Was braucht länger:

    int x = 3+21;
    //oder
    int y = pow(3,21);
    

    **

    Hä? Sind 2 völlig verschiedene Sachen, aber 2te brauch länger.



  • Original erstellt von Lars:
    Hä? Sind 2 völlig verschiedene Sachen, aber 2te brauch länger.

    hättest du Davies Post gelesen dann hättest du ja dann hättest du diesen Post nicht geschrieben :p :p



  • ICh versteh nicht, warum es nicht das gleiche sein sollte. Aber ich behaupte einfach mal, dass die erste Variante schneller ist.



  • Original erstellt von Helium:
    ICh versteh nicht, warum es nicht das gleiche sein sollte.

    bei den vorgegebenen werten 10 und 20 sind in der ersten variante:

    30 additionen (oder inkrementierungen)
    30 vergleiche
    30 spruenge

    und in der zweiten:

    20 additionen
    40 vergleiche
    30 spruenge (20 von der schleife und 10 von den if anweisungen)

    bei meiner methode *protz*:

    20 additionen
    20 vergleiche
    20 spruenge

    das ganze aufzaehlen bringt allerdings nur etwas wenn die "Mache Grenze 1/2 Sachen" sehr kurz ist



  • Das große + für die erste Version liegt wohl in der Lesbarkeit des Codes. Da steht ganz klar drin: von da bis da mach das und von da bis da mach das.
    In den anderen Versionen ist die Aussage nur noch verschlüsselt zu finden.


Anmelden zum Antworten