Ho un sistema basato su php che funziona perfettamente dal 2006, che ha un processo di backend (CLI, cron), che elabora milioni di record, usando una grande struttura ad albero in memoria.Perché php array si rallenta con le nuove versioni di php e come aggirarlo?
Ho notato grandi regressioni di prestazioni durante l'aggiornamento di una macchina debian.
Quindi, per cercare il problema, ho scritto un semplice script, scaricato una dozzina di versioni xampp ed eseguito lo stesso script con le diverse versioni di php.
$start=microtime(true);
$n=10;
$counter=1;
$testarray=Array();
for ($i[1]=0;$i[1]<$n;$i[1]++)
for ($i[2]=0;$i[2]<$n;$i[2]++)
for ($i[3]=0;$i[3]<$n;$i[3]++)
for ($i[4]=0;$i[4]<$n;$i[4]++)
for ($i[5]=0;$i[5]<$n;$i[5]++)
for ($i[6]=0;$i[6]<$n;$i[6]++)
for ($i[7]=0;$i[7]<$n;$i[7]++)
$testarray[$i[1]][$i[2]][$i[3]][$i[4]][$i[5]][$i[6]][$i[7]]=$counter++;
$end=microtime(true);
echo "PHP ".phpversion()." ".round(memory_get_peak_usage(true)/(1024*1024),2)." mbyte max ram, ".round($end-$start,2)." seconds\r\n";
corro lo stesso copione contro XAMPP 1.6.0a win32 win32 attraverso 1.7.7-VC9, con i seguenti risultati:
- PHP 5.2.1 890.25 mbyte max ram, 12.43 seconds
- PHP 5.2.1 890.25 mbyte max ram, 12.37 seconds
- PHP 5.2.2 890.25 mbyte max ram, 12.43 seconds
- PHP 5.2.3 890.25 mbyte max ram, 12.38 seconds
- PHP 5.2.4 890.25 mbyte max ram, 12.5 seconds
- PHP 5.2.5 890.25 mbyte max ram, 12.28 seconds
- PHP 5.2.5 890.25 mbyte max ram, 12.31 seconds
- PHP 5.2.6 890.25 mbyte max ram, 12.52 seconds
- PHP 5.2.6 890.25 mbyte max ram, 12.54 seconds
- PHP 5.2.8 890.25 mbyte max ram, 12.72 seconds
- PHP 5.2.9 890.25 mbyte max ram, 12.53 seconds
- PHP 5.3.0 975.5 mbyte max ram, 18.28 seconds
- PHP 5.3.1 975.5 mbyte max ram, 18.06 seconds
- PHP 5.3.5 975.5 mbyte max ram, 18.49 seconds
- PHP 5.3.8 975.5 mbyte max ram, 17.97 seconds
- PHP 5.3.8 975.5 mbyte max ram, 18.11 seconds
Note: - Non faccio uso di XAMPP o Windows sui server, ma questo era il modo più semplice per testare contemporaneamente diverse versioni. - Ho provato a google per questo problema alcune volte, ma non ho ottenuto risultati rilevanti - La perdita di velocità è circa la stessa (runtime più lungo del 50%) sui server - Non penso che un rallentamento di questo tipo è accettabile da qualsiasi framework o compilatore, - anche a dispetto di nuove funzionalità, i vecchi dovrebbero funzionare altrettanto bene di prima. Non posso dire al mio capo, che lo stesso computer con lo stesso software non può più fare lo stesso lavoro, perché abbiamo dist-aggiornato il debian su di esso ... Sembrerebbe un aggiornamento di Windows. :)
Qualche idea?
Wow solo per installare tutte le versioni di PHP che hai speso molto tempo credo. potresti testare solo 2-3 versioni – dynamic
Ciclo estremamente brutto a parte, non sono del tutto sicuro del perché a parte forse una (o più) delle estensioni PHP che vengono installate con XAMMP gonfiano le prestazioni come un matto. Yikes, con la maggior parte del mio codice ho visto le cose accelerare. Il primo pensiero che viene in mente sarebbe che forse la versione più recente funzioni meglio con l'orientamento agli oggetti. – pthurmond
Come diavolo hai installato tutte queste versioni? – Mustafa