Warum PHP-Array mit neueren PHP-Versionen langsamer wird, und wie man das umgeht?

8

Ich habe ein php-basiertes System, das seit 2006 perfekt funktioniert und einen Backend-Prozess (CLI, Cron) hat, der Millionen von Datensätzen verarbeitet und eine große baumartige Struktur im Speicher verwendet.

Ich habe bei der Aktualisierung eines Debian-Rechners große Leistungsregressionen bemerkt.

Um das Problem zu untersuchen, schrieb ich ein einfaches Skript und lud ein Dutzend xampp-Versionen herunter und führte das gleiche Skript mit den verschiedenen PHP-Versionen aus.

%Vor%

Ich führe das gleiche Skript gegen xampp win32 1.6.0a bis win32 1.7.7-vc9 mit den folgenden Ergebnissen aus:

%Vor%

Hinweise:  - Ich verwende keine xampp oder Windows auf Servern, aber dies war der einfachste Weg, um verschiedene Versionen gleichzeitig zu testen.  - Ich habe versucht, dieses Problem ein paar Mal zu googeln, habe aber keine relevanten Ergebnisse erhalten  - Der Geschwindigkeitsverlust ist ungefähr gleich (50% längere Laufzeit) auf den Servern  - Ich glaube nicht, dass eine solche Verlangsamung von irgendeinem Framework oder Compiler akzeptiert werden kann - trotz der neuen Features sollten die alten genauso gut funktionieren wie vorher. Ich kann meinem Chef nicht sagen, dass derselbe Computer mit der gleichen Software nicht mehr den gleichen Job machen kann, weil wir den Debian darauf aufdatiert haben ... Das würde aussehen wie ein Windows-Upgrade. :)

Irgendwelche Ideen?

    
PetrosHu 21.05.2012, 23:10
quelle

1 Antwort

4

Rufen Sie gc_disable () vor der Schleife auf. Schneidet meine Zeit in zwei Hälften.

(php hat in 5.3 einen neuen Garbage Collector hinzugefügt)

    
goat 21.05.2012, 23:22
quelle