Dennis: Schleifen

Beitrag lesen

Hi Paul,

kann man allgemein sagen was schneller ist?

Allgemein kann man da nicht wirklich was zu sagen - lediglich vermuten, ich würde dir empfehlen für beide Vorschläge ein Programm zu schreiben und einen Benchmark Test durchzuführen.

Noch eine grundsätzliche Anmerkung - es sieht mir hier so aus, als würde deine Suche nur eine Sache finden (sonst wäre das zweite Beispiel nämlich unlogisch), deshalb...

Schleifenanfang {
  Suche
  If gefunden {
    Schleife {
      Verarbeiten
      Ausgeben
    }

solltest du hier mit break die Schleife abbrechen,
      da sonst die äußere Schleife noch weiter läuft, obwohl
      das Gesuchte bereits gefunden wurde.

}
}

Wenn du so ein Abbrechen der Schleife mit einbaust, dann wird auch klar, dass dieser Code...

Schleifenanfang {
  Suche
}

... unter Umständen weniger performant sein kann, da hier auf jeden Fall alle Zustände durchlaufen werden (wie du sagst 15000), mit einem Break kann die Schleife u.U. schon nach dem 1. Durchlauf abgebrochen werden, weil direkt im ersten Durchlauf alles gefunden wurde.

Wenn du eine Suche realisieren willst, solltest du dir aber grundsätzlich überlegen, ob du nicht irgendwie einen Index anlegen kannst oder willst - das würde die Suche nämlich je nach dem deutlich beschleunigen.

In vielen Programmiersprachen bietet sich z.B. die Möglichkeit Werte in einem indexierten Array abzulegen, dann kann man über $array['index'] direkt auf ein bestimmtes Element zugreifen und muss es nicht erst suchen.

Wenn deine Originaldaten sich nicht auf diese Art und Weise strukturieren lassen, kannst du dir überlegen, ob es sich lohnt ein Array anzulegen, welches unter den bestimmten (zu suchenden) Werten auf das Original-Array verweist (Referenzen bzw. Zeiger). So ein Array zur Laufzeit zu generieren würde sich aber auf keinen Fall rentieren, das müsstest du schon irgendwo zwischenspeichern, damit du immer drauf zugreifen kannst und es lediglich regelmäßig aktualisieren.

Aber ich bin sicher, Google kann dir da mehr und vor allem konkretere Sachen nenne, als ich ;-)

Viele Grüße aus Kanada,
  ~ Dennis.