PyYAML vs JSON
PyYAMLとJSONの速度を,比較的でかいデータ (32.9 MB @ YAML, 33.9 MB @ JSON)で比べてみた.
JSONはYAMLのサブセットなので,まぁ予想はしていたんだけど,驚くほど違ったのでメモ.
YAMLのほうは,PyYAMLをlibyamlとともにビルドしたもの (つまりCで書いてある).
JSONはPython-2.6にビルトインのもの.しっかり読んでないので怪しいけどPythonネイティブのように見える.
In[11]: %time d = yaml.load(open('test.yaml'), Loader=yaml.cyaml.CLoader) CPU times: user 193.71 s, sys: 20.37 s, total: 214.08 s Wall time: 1087.30 s In [12]: %time d = json.load(open('test.hmm.json')) CPU times: user 34.60 s, sys: 0.23 s, total: 34.83 s Wall time: 35.70 s
一応,他のプロセスは可能な限り殺してテストしたのに,CPU時間と実時間の比がおかしいことになってる.
YAMLにとって有利なCPU時間のほうで比べても,JSONのほうが6倍以上速い.
やはりYAMLのほうが表記の自由度高いし複雑な構造を表現できるから重いと.
しかし,JSONでも気を配ってインデントしてやれば,可読性の面ではカバーできそうな気がするし,
僕の用途ではYAMLである必要がなさそうなので,これからはjson-pyを使うことにしようと思った.
おしまい