私は仕事でcakephpを使っていますが、cakephpについて調べていると、「cakeで用意されたメソッドを使うとパフォーマンスが低下する」なんてことが良く書かれています。
実際に動作の重さを感じていたので、どれくらいの差があるのか検証してみました。
検証方法
使っているcakeのバージョンは2系です。
今回は、findメソッドの動作とqueryメソッドの動作(生のSQL)の速度を比較します。
findメソッドとは、cakephpで用意された記述方法で、sqlのselect文のクエリを発行してくれるメソッドです。
データは、27カラムあるテーブルの約15000レコード程のユーザ情報の詰まったデータです。
このデータすべてを取り出すというメソッドをajaxで連続10回で呼び出しを行った時の速度を比較します。
1.cakephpのfindメソッドを使用する。
public function test(){
$options = array(
'fields' => array(
'*',
),
);
return $this->find('all', $options);
}
2.生のsqlを実行する
public function test2(){
$sql = "SELECT * FROM `t_users`;";
$data = $this->query($sql);
return $data;
}
速度が全然違いますね。
データの容量が多いこともありますが、70秒ほどかかっていた処理がほぼ倍の速度で処理できるようになっています。
cakephpのfindメソッドはゴミです。
selectして返ってくる配列の形も嫌いでしたが、処理速度までも遅いとなると、使うメリットが見当たらないです。
他の人の記事を見ている感じ、その他cakeで提供されているメソッドは全般重いようですね...。