9.2 パフォーマンス
ベンチマークを測定する
ベンチマークを測定するにはbenchmark
を使います。引数に指定した文字列がログに出力されます。
benchmark
メソッドのブロックの中身に計測したい処理を記述します。
class PostsController < ApplicationController
def index
benchmark "posts#index" do
@posts = Post.all
end
end
end
以下のようにログが出力されます。
posts#index (2.2ms)
SQLを調査する
ActiveRecordのexplain
メソッド使うことでSQLのコストを出力することができます。
[1] pry(main)> Post.all.explain
Post Load (37.2ms) SELECT "posts".* FROM "posts"
=> EXPLAIN for: SELECT "posts".* FROM "posts"
QUERY PLAN
-----------------------------------------------------------
Seq Scan on posts (cost=0.00..44.48 rows=1648 width=117)
(1 row)
コストの見方は左から初期化コスト
、総コスト
、取得行数
、行あたりのデータサイズ
になります。