SparkMonkay
Commander
- Registriert
- Feb. 2013
- Beiträge
- 2.337
Moinsen,
ich hänge hier vor einem Problem bezüglich meiner Konzeption einer Funktion. In erster Linie ist meine Frage mehr auf die Programmiersprache C gebunden, jedoch denke ich, dass mir solche Prinzipien/Verfahren auch in anderen Sprachen helfen könnten.
Erstmals eine Nebeninformation:
Dieses Programm arbeitet mit Daten, die eine unbestimmte Größe haben, daher geht es hier oder es sollte hier in diesem Thread um Array's der Größenordnung >500.000 Elemente gehen. Dieses Array soll NICHT sortiert werden, es sollte unverändert bleiben durch diesen Vorgang, die sind auch nicht sortiert, sondern die Informationen liegen wild im Array rum.
Zu der Frage:
Nehmen wir an ich laufe mein Array von mind. 500.000 Elementen ab. Und ich nehme mir einen Zähler, sprich das "übliche", und arbeite mich von vorne nach hinten durch.
Jetzt würde ich gerne Wissen, wie viel Zeit meine Instruktionen brauchen und ob die Methode, dass ich das Array von vorne und hinten durchkämme schneller ist oder aufgrund der erhöhten Anzahl der Instruktionen die ich dann einsetzen muss genauso, wenn nicht sogar länger braucht.
Ich meine damit sowas dann:
Bei diesem Fall müsste ich dann auch immer gucken welcher gewisse Bedingungen erfüllt und würde somit auf u.U die selbe Anzahl von Instruktionen kommen.
In Fall 1 habe ich eine Überprüfung pro Durchlauf.
In Fall 2 habe ich zwei Überprüfungen pro Durchlauf, dafür die hälfte an Durchläufen.
Wenn ich jetzt sagen würde, dass X die Anzahl meiner Durchläufe währe und Y die Anzahl meiner Instruktionen, dann würde ich bei Fall 1 folgendes bekommen: X*Y
In Fall 2 bekomme ich dann 2X*(Y/2)=X*Y. Das ist jetzt eigentlich ganz oberflächlich, da die Instruktionen unterschiedlich viel Zeit in Anspruch nehmen. Aber was davon wäre schneller?
Denn dieses Array muss leider mehrmals durchgearbeitet werden.
Danke für Hilfreiche Antworten!
Gruß SparkMonkay
ich hänge hier vor einem Problem bezüglich meiner Konzeption einer Funktion. In erster Linie ist meine Frage mehr auf die Programmiersprache C gebunden, jedoch denke ich, dass mir solche Prinzipien/Verfahren auch in anderen Sprachen helfen könnten.
Erstmals eine Nebeninformation:
Dieses Programm arbeitet mit Daten, die eine unbestimmte Größe haben, daher geht es hier oder es sollte hier in diesem Thread um Array's der Größenordnung >500.000 Elemente gehen. Dieses Array soll NICHT sortiert werden, es sollte unverändert bleiben durch diesen Vorgang, die sind auch nicht sortiert, sondern die Informationen liegen wild im Array rum.
Zu der Frage:
Nehmen wir an ich laufe mein Array von mind. 500.000 Elementen ab. Und ich nehme mir einen Zähler, sprich das "übliche", und arbeite mich von vorne nach hinten durch.
Code:
int count=0;
int length=IRGENDWAS>0;
for(count=0; count<length ; count++)
{
//Das tun was verlangt ist oder suchen was gesucht ist
}
Jetzt würde ich gerne Wissen, wie viel Zeit meine Instruktionen brauchen und ob die Methode, dass ich das Array von vorne und hinten durchkämme schneller ist oder aufgrund der erhöhten Anzahl der Instruktionen die ich dann einsetzen muss genauso, wenn nicht sogar länger braucht.
Ich meine damit sowas dann:
Code:
int length =IRGENDWAS>0;
int count1=0; //von vorne suchen
int count2=length-1; //von hinten suchen
while(count2>=count1)
{
//Das tun was verlangt ist oder suchen was gesucht ist
count1++;
count2--;
}
Bei diesem Fall müsste ich dann auch immer gucken welcher gewisse Bedingungen erfüllt und würde somit auf u.U die selbe Anzahl von Instruktionen kommen.
In Fall 1 habe ich eine Überprüfung pro Durchlauf.
In Fall 2 habe ich zwei Überprüfungen pro Durchlauf, dafür die hälfte an Durchläufen.
Wenn ich jetzt sagen würde, dass X die Anzahl meiner Durchläufe währe und Y die Anzahl meiner Instruktionen, dann würde ich bei Fall 1 folgendes bekommen: X*Y
In Fall 2 bekomme ich dann 2X*(Y/2)=X*Y. Das ist jetzt eigentlich ganz oberflächlich, da die Instruktionen unterschiedlich viel Zeit in Anspruch nehmen. Aber was davon wäre schneller?
Denn dieses Array muss leider mehrmals durchgearbeitet werden.
Danke für Hilfreiche Antworten!
Gruß SparkMonkay