LoginSignup
1

More than 5 years have passed since last update.

bootsnapを使ってrailsの起動時間を10%くらい短縮した

Last updated at Posted at 2017-08-07

railsのデフォルトのGemfileにも追加されたbootsnapを導入しただけでrailsの起動時間を10%くらい短縮できました。

この記事は個人ブログでも掲載しています。
http://tackeyy.com/blog/reduce-rails-boot-time-about-10-percent-with-bootsnap

Shopify/bootsnap

Boot large ruby/rails apps faster

大きいrubyやrailsのアプリを早くするGemです。
railsの場合、2行追加するだけなのでREADMEを見てください。

検証結果

railsの起動時間の計測用のコマンドとして time bin/rails runner "puts Rails.env" を利用しました。
railsのデフォルトのGemfileにbootsnapを導入するPRのコメントで上記のコマンドを見かけたのでそのまま利用しています。rails runner は知らなかったのですが、ヘルプを引いて見たところまあ計測に使っても良いかなという感じだったので採用しました。

$ bin/rails runner -h
Examples:
    rails runner 'puts Rails.env'
        This runs the code `puts Rails.env` after loading the app

環境

macOS Sierra 10.12.6 メモリ 16GB
rails 4.2.0
ruby  2.3.4

bootsnap導入前

$ time bin/rails runner "puts Rails.env"
development
bin/rails runner "puts Rails.env"  17.10s user 3.91s system 85% cpu 24.562 total

$ time bin/rails runner "puts Rails.env"
development
bin/rails runner "puts Rails.env"  16.77s user 3.08s system 88% cpu 22.546 total

$ time bin/rails runner "puts Rails.env"
development
bin/rails runner "puts Rails.env"  17.02s user 3.68s system 85% cpu 24.085 total

平均: 16.96s

bootsnap導入後

$ time bin/rails runner "puts Rails.env"
development
bin/rails runner "puts Rails.env"  19.36s user 3.49s system 80% cpu 28.230 total

$ time bin/rails runner "puts Rails.env"
development
bin/rails runner "puts Rails.env"  14.79s user 1.81s system 79% cpu 20.918 total

$ time bin/rails runner "puts Rails.env"
development
bin/rails runner "puts Rails.env"  14.39s user 1.43s system 79% cpu 19.823 total

平均: 16.18s

bootsnapをGemfileに追加して bundle install を走らせた直後に1回目を計測したので遅かったのかな?と思っています。
(Gemの読み込みの問題なのか、bootsnapのキャッシュなどの処理の問題なのかはみてません)
3回目以降も計測したのですが、bootsnapを導入してからはだいたい13秒後半〜14秒後半に落ち着きました。

最後に

railsの起動が遅いとイライラするので、できるだけ早く起動したいですよね。
起動時のボトルネックを調査して対応するのも時間がかかるのでまずはサクッとbootsnapを入れてみることをおすすめします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1