少しだけ動作が速くなるコードの書き方3つ
レコードがあることを条件にしたいとき、findの代わりにexists?を使う
if User.find_by(email: "...") # something.todo end
のとき、findやfind_byではActiveRecordのインスタンスが生成されてしまう分遅いので、存在確認をしたいだけなら下記のようにexistsを使うとよいようです。
if User.exists?(email: "...") # something.todo end
多数のレコードを処理するとき、eachではなく、find_in_batchesを使って一度に生成するインスタンス数を制限する
User.all.each do |user| # something.todo end
としたいとき、
User.find_in_batches(of: 100) do |users| users.each do |user| # something.todo end end
正規表現にマッチするかどうか調べるとき、=~よりmatch?の方が速い
str =~ /regexp/
より
str.match?(/regexp/)