PHP5.3 Performance: asort()

PHP's asort performanceHeutige Fragestellung in der PHP-Agentur: Kann man bei asort() an der Performance-Schraube drehen, indem man vorgibt welchen Datentyp die Array-Elemente haben?

Der Test

/**
* env : Win32, PHP5.3.0
*
* $a_int_data : 10.000x     rand(0,100)
* $a_str_data : 10.000x md5(rand(0,100))
*
* loop 5000x
*/

// numeric keys //
asort($a_int)               : 0.0263sec. avg
asort($a_int,SORT_NUMERIC)  : 0.0343sec. avg
asort($a_str)               : 0.1317sec. avg
asort($a_str,SORT_STRING)   : 0.0547sec. avg

// md5 keys //
asort($a_int)               : 0.0283sec. avg
asort($a_int,SORT_NUMERIC)  : 0.0382sec. avg
asort($a_str)               : 0.1626sec. avg
asort($a_str,SORT_STRING)   : 0.0688sec. avg

Das Resumee

  • asort mit so großen Arrays ist bescheuert ;o)
  • Auch wenn er nicht dazu gedacht ist kann man den zusätlichen Parameter bei String-Arrays dazu einsetzen um einen kleinen Performanceschub zu bekommen. Für alle anderen Fälle sollte man das lieber lassen.
  • Es spielt dabei keine rolle welchen Typ die Keys haben.
  • Twitter
  • Facebook
  • Google Bookmarks
  • MisterWong.DE
  • Yigg

Senf dazu geben