Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Railsのrenderをちょっと速くしました

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for akatsukinewgrad akatsukinewgrad
December 17, 2021
1.2k

 Railsのrenderをちょっと速くしました

Avatar for akatsukinewgrad

akatsukinewgrad

December 17, 2021
Tweet

More Decks by akatsukinewgrad

Transcript

  1. 流れ • RailsのMVC • Viewの仕組み • 問題点 • 新しく作った仕組み •

    ベンチマーク • Gem化 RailsのJSONレンダリングが遅い… それを改善するgemを作りました というお話 3
  2. Railsの設計・MVC •Webサーバー • Requestを受け取り、Responseを返す • HTML(ウェブページ) • JSON(ウェブAPI) •MVC ->

    Model, View, Controller • 今日はRailsのAPIサーバーのViewについて話す Request:   XXXのJSONが欲しい! Response:   いいよ { "json": "data" } 4
  3. Jbuilder • Rails標準のJSON handler • いいところ • JSON生成用の便利メソッドがいっぱいある • partialが使える、DRYに書ける

    • よくないところ • DSLを使用 • パフォーマンスがよくない • オブジェクト生成が多い • テンプレートの検索・ロードが遅い 6
  4. さらに、使いやすいように、いろいろ工夫 • 複数のテンプレートパスを設定できるように • テンプレートのキャッシュ設定 • Viewキャッシュのヘルパー • JSONのencoderをC実装のGemに置き換える •

    jbuilderからsimple_jsonに乗り換るためのモジュール • 2種類の出力を比較してくれる • 存在しないpartialはjbuilderを使用できる など このくらいあれば、Jbuilderはいらないじゃろ! 11
  5. benchmarkで比較 rails6.1 ruby2.7.4で比較 - Jbuilder - Jb - SimpleJson 同じ内容の1

    template + 10 partialで時 間計測 結果: jbuilderの20倍速い 12