CakePHPではcollectionを利用して様々な処理を行うことができ便利なので簡単なソートする際にもわざわざ活用していたのですが phpには標準で配列をソートする関数が定義されているので処理速度が遅くなっているのではないかとおもいどのくらいの差があるのか比較してみました
$arr = [ ['status' => 1, 'name' => 'Haruto'], ['status' => 2, 'name' => 'Mario'], ['status' => 1, 'name' => 'Ken'], ['status' => 1, 'name' => 'Yusuke'], ['status' => 2, 'name' => 'Areku'], ['status' => 2, 'name' => 'Seiryu'], ['status' => 1, 'name' => 'Yu'], ['status' => 1, 'name' => 'Juri'], ['status' => 3, 'name' => 'Hamaji'], ['status' => 2, 'name' => 'Hiro'], ]; $start = microtime(true); for ($i = 0 ; $i < 100 ; $i++){ $arr = collection($arr)->sortBy('status')->toArray(); } $end = microtime(true) - $start; echo $end; $arr = [ ['status' => 1, 'name' => 'Haruto'], ['status' => 2, 'name' => 'Mario'], ['status' => 1, 'name' => 'Ken'], ['status' => 1, 'name' => 'Yusuke'], ['status' => 2, 'name' => 'Areku'], ['status' => 2, 'name' => 'Seiryu'], ['status' => 1, 'name' => 'Yu'], ['status' => 1, 'name' => 'Juri'], ['status' => 3, 'name' => 'Hamaji'], ['status' => 2, 'name' => 'Hiro'], ]; $start = microtime(true); for ($i = 0 ; $i < 100 ; $i++){ arsort($arr); } $end = microtime(true) - $start; echo $end;
結果
コレクションを使った場合
0.0028500556945801
php標準の関数を使った場合
0.0001630783081054
やはりムダにcollectionばかり使うのはよくなかったです