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)

コストの見方は左から初期化コスト総コスト取得行数行あたりのデータサイズになります。

results matching ""

    No results matching ""