Sta notte, mentre non riuscivo a dormire mi sono chiesto se è più veloce natsort
con array_reverse
oppure usort
con -strnatcmp
.
La risposta più o meno me l’aspettavo già, però non pensavo la differenza fosse così tanto abissale come vi farò vedere dopo.
Come benchmark ho generato un array col ciclo for di 10^6 elementi e poi li ho messi a caso. Ho dato ad entrambe le funzioni il medesimo array, in modo da fare un test il meno influenzato possibile.
Ho eseguito il test sia per il for che incrementa i valori ($i++), sia per quello che li decrementa ($i–).
Un’ultima considerazione: secondo me non sono importanti i risultati assoluti ma quelli relativi, in quanto non volevo fare il test della macchina, che so non essere tra le migliori.
Insomma, so che si potrebbe fare senza dubbio di meglio come test, magari anche in 64bit.
Ed ecco i risultati:
VDFN Benchmark
Natsort al contrario, for crescente.
Natsort + array_reverse
Tempo: 31.985618114471s
Memoria di picco: 175.97104263306MB
usort (-strnatcmp)
Tempo: 74.302319049835s
Memoria di picco: 175.97214508057MB
Come vedete con usort e il mio callback ci mette più del doppio, mentre la RAM ha valori molto, molto vicini. … [Leggi il resto]