LoginSignup
16
7

More than 5 years have passed since last update.

gRPC-webを使ってJSONとgRPCどっちが速いのか検証してみた

Posted at

概要

  • タイトルは本当はREST API vs gRPCが正しい
    • REST APIでサーバー/クライアント通信する時にjsonでやり取りすることが多いと思うのでこのタイトルにした
  • あまり情報がない中公式のexampleを参考にし、gRPC-webも取り入れて動くプロジェクトを作った
  • 比較方法は同じデータをクライアントからサーバーに任意の回数「シリアライズ->リクエスト->レスポンス」の時間を比較
    • シリアライズされたデータで速度検証してもあまり意味がないと判断したため

作ったリポジトリ -> https://github.com/jigengineer/json-vs-protocol-buffers

結果

比較は、それぞれ1000回試行するのにかかった時間を計測。

n JSON gRPC
1 3.614 sec 4.247 sec.
2 3.586 sec. 4.637 sec.
3 3.608 sec. 4.57 sec.
4 3.656 sec. 4.836 sec.
5 4.316 sec. 4.278 sec.
6 3.55 sec. 4.387 sec.
7 3.483 sec. 4.303 sec.
8 3.567 sec. 4.468 sec.
9 3.603 sec. 4.481 sec.
10 3.575 sec. 4.402 sec.
ave. 3.656 sec. 4.461 sec.

圧倒的にJSONの方が高速である。

あとがき

この比較だと、シリアライズにかかる時間が大きいのか、ネットワークロードが重いのかがまだわからないことと、gRPC自体も複雑で、いろんな通信方式があるようなので、gRPCの方が遅いという結論づけはできません。

明確なのは、「シリアライズ+リクエストしてレスポンスをもらう」一連の流れを連続して複数回行う場合、JSONの方が速かったということです。

ちなみにもう少し言うと、gRPCについてそこまで詳しくないので、公式リポジトリのexampleを参考にして動く状態に持ってきたので、パフォーマンスを最適化したりとかはしていないですし、どのような状況でパフォーマンスが最高になるのかもよく知りません。

一応比較に用いたプログラムはこちらに置いてあるので、参考にしてみてください。

16
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
7