Benchmark natsort al contrario

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]