- これは
- 初老とPython (4) 〜 モジュールオリンピック 2016 冬 〜”>
— JSONモジュールって…
— 出場選手
—– 第一のコース
—– 第二のコース
—– 第三のコース
— 競技上の諸注意
—– OS 環境
—– Pythonバージョン
—– サンプルデータ
—– 競技方法
—– スクリプト
— 結果
—– 概要
—– JSONデコード
—— Python 2.7.13(※ Y 軸の単位は sec)
—— Python 3.6.0(※ Y 軸の単位は sec)
—– JSONエンコード
—— Python 2.7.13(※ Y 軸の単位は sec)
—— Python 3.6.0(※ Y 軸の単位は sec)
— 以上
これは
初老丸アドベントカレンダー 24 日目の記事です。
qiita.com
ということで、自分の記事はずーっと小ネタですいません。
初老と Python (4) 〜 JSON モジュールオリンピック 2016 冬 〜
JSON モジュールって…
今まで標準の json モジュールしか知りませんでしたが、とあるお仕事で Python スクリプトのボトルネックを調査していたところ、標準の json モジュールが結果として遅いんだ…という結論に至りました。
さて、他の json モジュールを選ばなければいけません…ということで、幾つかの JSON モジュールの処理速度比較というのをやってみました。
尚、環境によって結果は変動することが想定されますので、あくまでも参考程度に読んで頂けると幸いです。
出場選手
第一のコース
- 標準の json モジュール
- いつもお世話になってます
第二のコース
- simplejson モジュール
- https://pypi.python.org/pypi/simplejson
第三のコース
- ujson モジュール
- https://pypi.python.org/pypi/ujson
競技上の諸注意
OS 環境
bash-3.2$ sw_vers ProductName: Mac OS X ProductVersion: 10.11.6 BuildVersion: 15G1108
Python バージョン
- Python 2.7.13
- Python 3.6.0
サンプルデータ
- https://www.mockaroo.com にて JSON データを 1000 レコード作成して取得
- 同様にhttps://www.mockaroo.com より CSV データを 1000 レコード作成して取得
競技方法
- JSON データをデコードする時間を 5 回計測
- CSV データを JSON データにエンコードする時間を 5 回計測
スクリプト
- Python 2 系:https://gist.github.com/inokappa/ad27a544d6c40ca845f9f889213b2b1d
- Python 3 系:https://gist.github.com/inokappa/7877f659757fedf202355a19ec9e383c
結果
概要
- 全体的に ujson が中盤から飛び出して、そのままぶっちぎりな感じ
- 但し、Python 3.6.0 だと標準の json モジュールも健闘している
JSON デコード
Python 2.7.13(※ Y 軸の単位は sec)
Python 3.6.0(※ Y 軸の単位は sec)
JSON エンコード
Python 2.7.13(※ Y 軸の単位は sec)
Python 3.6.0(※ Y 軸の単位は sec)
以上
メモでした。
元記事はこちら
「ショロカレ 24 日目 | 初老と Python (4) 〜 JSON モジュール速度比較オリンピック 2016 冬 〜」