PHP-Objekte im Vergleich zu Arrays
Habe ich eine riesige Menge von PHP-Objekten für ein neuronales Netzwerk für die ich zu Durchlaufen und führen Sie einige Mathe auf. Ich Frage mich, ob es nicht besser wäre, mit einem assoziativen array über Instanzen von Klassen?
Beschäftige ich mich mit rund 3640
Objekte und überarbeiten, um 500
mal (am besten) auf der Oberseite, so dass jede Mikro-Optimierung hilft eine Menge. Würde es zwangsläufig schneller zu tun $object['value']
als $object->value
?
Edit: So sind Sie beide gleich. Aber ich denke, es wäre ein wenig overhead für den Konstruktor? Ich glaube nicht, dass ich möchte, um den Handel in meine schöne Klassen für dirty-arrays 😛
InformationsquelleAutor der Frage Louis | 2010-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sitz in den code von Quazzle, lief ich den nächsten code (5.4.16 windows 64bits):
Und ich bekam die nächste Folge:
Fazit für php 5.4
ps: als Hinweis, wenn die Klasse definiert ist, aber die Mitglieder dann, die Verwendung dieser Klasse ist langsamer. Er verwendet auch mehr Speicher. Offenbar das Geheimnis ist, zu definieren, die Mitglieder
Update
Ich die Aktualisierung von php 5.4 auf php 5.5 (5.5.12 x86 windows).
Fazit für php 5.5
InformationsquelleAutor der Antwort magallanes
Ich habe diesen code für "profiling" (1000 Instanzen, 1000.000 liest/schreibt):
Gibt es in meinem LINUX-hosting, dieses Zeug:
also im Fazit: Objekte sind langsamer, auch auf PHP 5.2. Nicht verwenden, Objekte, es sei denn, Sie wirklich brauchen Ihre oop-features.
InformationsquelleAutor der Antwort Quazzle
Sie haben nicht gezeigt, uns den code, wie
$object->value
funktioniert, wie es sein könnte, dass backend-es ist ein array, in dem Fall theoretisch Verwendung eines Arrays schneller als es geht um einen weniger-Funktion aufrufen. Die Kosten für den lookup wird wahrscheinlich riesig sein im Vergleich zu dem Aufruf der Funktion. Wenn es eine variable ist, gibt es sehr wenig Unterschiede wie die Objekte und arrays in PHP haben eine sehr ähnliche Umsetzung.Wenn Sie sind auf der Suche Optimierungen, die Sie benötigen, um ein Profil zu überprüfen, wo die Mehrheit der Zeit verwendet wird. Ich vermute, dass das verändern von Objekten, arrays machen keinen großen Unterschied.
InformationsquelleAutor der Antwort Yacoby
Ich sehe, das ist ein Alter post also dachte ich, ich werde es aktualisieren.
hier sind meine codes und Werte, auf Zend CE 5.3.21
Ich habe versucht, zum testen das ganze, speichern von info und zog ihn zurück.
V1 : 0.83 sec
V2 : nimmt 3.05 sec
V3 : 1.98 Sek (beachten Sie, dass der Konstruktor verbessert die Leistung)
InformationsquelleAutor der Antwort Nir
Können Sie immer überprüfen Sie die PHP-source-code für die micro-Leistung-features wie die.
Aber auf den ersten Blick nicht zu tun ['Wert'] wird nicht schneller sein, weil PHP benötigt zu tun, eine Suche, wo zu finden ['Wert'] auch thougn einen hashtable-lookup sollte in O(1), das ist nicht garantiert. Gibt es mehr Aufwand, wenn Sie verwenden Text-index.
Wenn das Objekt enthält nur 1 Variablen, die Sie zugreifen müssen, das ist Wert, es gibt noch mehr overhead bei der Verwendung ein Objekt.
InformationsquelleAutor der Antwort Filip Ekberg
Wenn Arrays und Klasse sind die gleiche Leistung, ich denke, mit Objekten vordefinierter Klassen für die Speicherung/Weitergabe von business-Daten machen würde, unser Programm mehr Logik und den code mehr Lesbarkeit.
Heute mit modernen ide wie Eclipse, Netbean ... es ist sehr bequem zu wissen, welche info-Objekte (vordefinierte Klasse) trägt, aber arrays sind nicht so
ZB:
Mit array
Objekt mit
InformationsquelleAutor der Antwort trungnnh
Benutze ich magallanes' code unter php 7.0.9 :
Und Benutzer, unter dem php 7.1.3:
InformationsquelleAutor der Antwort chariothy