gRPC-webを使ってJSONとgRPCどっちが速いのか検証してみた
2127 ワード
概要
- タイトルは本当は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を参考にして動く状態に持ってきたので、パフォーマンスを最適化したりとかはしていないですし、どのような状況でパフォーマンスが最高になるのかもよく知りません。
一応比較に用いたプログラムはこちらに置いてあるので、参考にしてみてください。
Author And Source
この問題について(gRPC-webを使ってJSONとgRPCどっちが速いのか検証してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/jigengineer/items/62daa29a56ac3ffcfa77著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .