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

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

akatsukinewgrad
December 17, 2021
950

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

akatsukinewgrad

December 17, 2021
Tweet

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