×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
@mtsmfm GraphQL Ruby ベンチマーク
Slide 2
Slide 2 text
松島 史秋 Backend engineer at Autify GitHub, Twitter @mtsmfm
Slide 3
Slide 3 text
https://autify.com/careers
Slide 4
Slide 4 text
https://www.meetup.com/ja-JP/GraphQL-Tokyo/
Slide 5
Slide 5 text
https://ninirb.github.io
Slide 6
Slide 6 text
大事なことは最初に - GraphQL Ruby v2.0.13 は 1000 要素あるとき に 1 フィールド足すと 15 ms くらい処理時間が 増える (2.60GHz CPU) - v2.0.13 は v1.5.15 と比べて倍くらい遅くなって いる - つまり倍くらい速くなる余地がある気がする
Slide 7
Slide 7 text
GraphQL Ruby なんか遅い?
Slide 8
Slide 8 text
https://speakerdeck.com/mtsmfm/make-graphql-ruby-faster-a-bit
Slide 9
Slide 9 text
https://speakerdeck.com/mtsmfm/make-graphql-ruby-faster-a-bit
Slide 10
Slide 10 text
前回得たこと、気になったこと - 1000 要素 4 フィールドで 60ms - 実際 4 フィールドしかないことはほぼない - 1 フィールドにつきどれくらいかかる? - 増えれば増えるほど遅くなる? - リリースごとだんだん遅くなってる?
Slide 11
Slide 11 text
ベンチマーク内容 type Article { field0: String! field1: String! ... fieldN: String! } type Query { articles: [Article!]! } query { articles { field0, field1, ..., fieldN } }
Slide 12
Slide 12 text
ベンチマーク内容 type Article { field0: String! field1: String! ... fieldN: String! } type Query { articles: [Article!]! } query { articles { field0, field1, ..., fieldN } } 要素数 フィールド数
Slide 13
Slide 13 text
ベンチマーク内容 - Query 文字列を渡して Ruby の Hash オブジェ クトが返ってくるまでの時間 - 30 秒を超えるまでループして処理時間と回数を 記録 - Ruby 2.7.6 - 古い GraphQL Ruby を動かすため 2 系
Slide 14
Slide 14 text
ベンチマーク環境 - GitHub Actions (ubuntu-latest) - Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz - 2 コア - 具体的なスペックは引きによって変わることがあるかも - 全部 1 実行で回している - https://github.com/mtsmfm/graphql-ruby-benchmark
Slide 15
Slide 15 text
1 フィールドに つきどれくらい かかる?
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
1 フィールドにつきどれくらいかかる? - 1000 要素のとき、だいたい 15 ms くらい - 前回 1000 要素 4 フィールド 60 ms だったのでそれっ ぽい (マシンは違うけど) - フィールド数が少ないと 1 フィールドあたりの時 間が多い - おそらくクエリのパースとかの分 - 100 フィールド以降はほぼ変わらない
Slide 18
Slide 18 text
リリースごと だんだん遅く なってる?
Slide 19
Slide 19 text
https://github.com/mtsmfm/graphql-ruby-benchmark/blob/eaf93fb7ef10753d571eff13b635cf33167dcc03/graphql.rb 全バージョンで動くコードを書いた
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
GraphQL Ruby のバージョンごとの速度 - 1.1 と 1.5 は 1.8 以降の倍くらい速かった - 最初期が最速ではなかった
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
ご清聴ありがとうございました - GraphQL Ruby v2.0.13 は 1000 要素あるとき に 1 フィールド足すと 15 ms くらい処理時間が 増える (2.60GHz CPU) - v2.0.13 は v1.5.15 と比べて倍くらい遅くなって いる - つまり倍くらい速くなる余地がある気がする
Slide 25
Slide 25 text
Credits Background pattern from Toptal Subtle Patterns https://www.toptal.com/designers/subtlepatterns/