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 spruengeund 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 spruengedas 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.