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

GraphQL Ruby benchmark

GraphQL Ruby benchmark

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 と比べて倍くらい遅くなって いる - つまり倍くらい速くなる余地がある気がする