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

GraphQL Ruby benchmark

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

GraphQL Ruby benchmark

Avatar for Fumiaki MATSUSHIMA

Fumiaki MATSUSHIMA

August 31, 2022
Tweet

More Decks by Fumiaki MATSUSHIMA

Other Decks in Programming

Transcript

  1. 大事なことは最初に - GraphQL Ruby v2.0.13 は 1000 要素あるとき に 1

    フィールド足すと 15 ms くらい処理時間が 増える (2.60GHz CPU) - v2.0.13 は v1.5.15 と比べて倍くらい遅くなって いる - つまり倍くらい速くなる余地がある気がする
  2. 前回得たこと、気になったこと - 1000 要素 4 フィールドで 60ms - 実際 4

    フィールドしかないことはほぼない - 1 フィールドにつきどれくらいかかる? - 増えれば増えるほど遅くなる? - リリースごとだんだん遅くなってる?
  3. ベンチマーク内容 type Article { field0: String! field1: String! ... fieldN:

    String! } type Query { articles: [Article!]! } query { articles { field0, field1, ..., fieldN } }
  4. ベンチマーク内容 type Article { field0: String! field1: String! ... fieldN:

    String! } type Query { articles: [Article!]! } query { articles { field0, field1, ..., fieldN } } 要素数 フィールド数
  5. ベンチマーク内容 - Query 文字列を渡して Ruby の Hash オブジェ クトが返ってくるまでの時間 -

    30 秒を超えるまでループして処理時間と回数を 記録 - Ruby 2.7.6 - 古い GraphQL Ruby を動かすため 2 系
  6. ベンチマーク環境 - GitHub Actions (ubuntu-latest) - Intel(R) Xeon(R) Platinum 8171M

    CPU @ 2.60GHz - 2 コア - 具体的なスペックは引きによって変わることがあるかも - 全部 1 実行で回している - https://github.com/mtsmfm/graphql-ruby-benchmark
  7. 1 フィールドにつきどれくらいかかる? - 1000 要素のとき、だいたい 15 ms くらい - 前回

    1000 要素 4 フィールド 60 ms だったのでそれっ ぽい (マシンは違うけど) - フィールド数が少ないと 1 フィールドあたりの時 間が多い - おそらくクエリのパースとかの分 - 100 フィールド以降はほぼ変わらない
  8. ご清聴ありがとうございました - GraphQL Ruby v2.0.13 は 1000 要素あるとき に 1

    フィールド足すと 15 ms くらい処理時間が 増える (2.60GHz CPU) - v2.0.13 は v1.5.15 と比べて倍くらい遅くなって いる - つまり倍くらい速くなる余地がある気がする