In PHP was ist schneller, big Switch-Anweisung, oder ein Array key lookup

In PHP was ist schneller, machen eine große switch-Anweisung, oder die Einrichtung ein array und Suche den Schlüssel?

Nun, bevor Sie Antworten, ich bin mir bewusst, dass für Reine Suchvorgänge das array ist schneller. Aber, das ist vorausgesetzt, erstellen Sie das array nur einmal, dann sucht es immer wieder.

Aber das ist nicht das, was ich Tue - jeden Lauf durch den code neu ist, das array wird nur einmal jedes mal. Also alle die array-hashes berechnet werden müssen frische jedes mal, und ich Frage mich, ob das tun, das setup ist langsamer als einfach mit einer switch-Anweisung.

  • Versuchen Sie es. Schreiben Sie ein PHP-Skript laufen durch jede Methode ein paar 100.000 mal und drucken Sie die Dauer für jede der beiden Methoden. Diese Art von Optimierungen selten einen signifikanten Unterschied auf lange Sicht jedoch.
  • "Ist es auch egal"? Wenn es zu keinen performance-Analyse dann -- Nein, gibt es nicht. Verwenden Sie, was ist übersichtlicher und wartbarer. (Es kann weder von oben).
  • Diese "Optimierungen" nicht wahrscheinlich, liefern eine Menge von Ergebnissen in die lange laufen, vielleicht ein paar Millisekunden oder so. Wenn Sie tatsächlich bereitstellen, diese in einer sehr großen Umgebung, die Rechenleistung, die du bekommst, wahrscheinlich zu machen, diese Optimierungen zu vernachlässigen. Nur meine Meinung, though. Probieren Sie es aus und sehen. Führen Sie es durch einen stress-test. Experimentieren ist der Weg, um die Antwort zu bekommen 🙂
  • Ich habe nicht versucht, eine performance-Analyse sein, aber ich würde davon ausgehen, dass die microoptimization wäre zum speichern der hashes, so dass die hashes nicht berechnet werden müssen-frisch jedes mal.
  • Planen Sie, wie Sie schreiben das array/switch auf eine php-Datei (je nachdem wie dein test scheint zu funktionieren)?
  • Ich tun konnte, meinen code zwei Möglichkeiten, so dass ich im Begriff war, zu entscheiden, welcher schneller ist. (Zumindest, wenn es einen großen Unterschied.)
  • Was passiert, wenn Sie etwas machen wollen komplizierter als echo wieder den Wert? d.h. Sie können speichern, eine Funktion Referenz in das array und nennen es, was ich mir vorstellen würde, Einfluss auf die Geschwindigkeit ein bisschen. Sollten Sie auch wahrscheinlich "Zufallsmodus" auf den index zugegriffen jedes mal. Das Umschalten könnte schneller sein, bis zu einem gewissen Punkt und wird etwas langsamer sein über diesen Punkt. So oder so, Sie sind immer noch durch 17,000,000 läuft in weniger als 10 Sekunden, so dass die Lesbarkeit des Schalters gewinnt in meinem Kopf.
  • Wenn die hashes neu berechnet werden müssen, jedes mal, das würde bedeuten, dass switch/case Zustand sein müssen "dynamisch" zu. Wie sind Sie mit der Planung über die Umsetzung, der? Oder Verstand ich Sie falsch?
  • So ich denke, ich werde dies ignorieren, Optimierung und gehen mit dem, was ist einfacher Tun Sie dies für jede andere "Optimierung" Sie denken, und Sie werden auf dem richtigen Weg. Diese Art von Mikro-Optimierung sind absolut nutzlos, und Sie werden die sap Ihre Produktivität für keine messbaren Vorteil in der realen Welt code.
  • Sie werden neu berechnet, wenn php öffnet und die Datei analysiert.
  • Aber ich wusste nicht im Voraus, dass es eine Mikro-Optimierung. Ich Frage mich, ob es wäre ein großer Unterschied.
  • Optimierung der algorithmen ergibt spürbare performance-Steigerungen. Optimierung der syntax ist eine Verschwendung von Zeit; verwenden Sie, was lesbar ist und wartbar.
  • Es gibt keine Garantie, dass beide Lösungen sind optimiert, und keiner von Ihnen ausführen, in der degraded O(n) - Art. Dies kann eine Algorithmische Optimierung, nicht eine syntax, Optimierung.

InformationsquelleAutor Ariel | 2011-07-27
Schreibe einen Kommentar