操作
機能 #1246
完了json_pureの利用をやめる
開始日:
2018-05-17
期日:
進捗率:
0%
プラグイン名:
説明
#1145-7 で話していたjson-pureについて、機会があったので調べたところ、次のような速度差があった。
ある短いJSONを1万回パースしたところ json: 0.000078 json_pure: 0.000401 という壊滅的な結果が出た。さて、俺はこの結果を見てしまったわけだが…
- 遅い
- なんかパッケージとかで面倒なこともあるらしい
- json_pureは2.1が出ているのにmikutterでは~>1.8の指定のまま放置されている
という問題があるため、json_pureの利用をやめる方向で検討する。
検証に使ったコード
require 'benchmark'
require 'json/pure'
#require 'json'
json_str = '{"id":"100043739035309893","original_uri":"https://social.mikutter.hachune.net/users/toshi_a/statuses/100043739035309893","url":"https://social.mikutter.hachune.net/@toshi_a/100043739035309893","account":{"id":"2","username":"toshi_a","acct":"toshi_a@social.mikutter.hachune.net","display_name":"胃","locked":false,"created_at":"2017-11-19T17:18:40+09:00","followers_count":471,"following_count":214,"statuses_count":21598,"note":"<p>* 作った<br />- mikutter :: <a href=\"https://mikutter.hachune.net/\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">mikutter.hachune.net/</span><span class=\"invisible\"></span></a></p><p>* 好き<br />- Minecraft :: 豆腐<br />- RimWorld :: A17 very easy<br />- アトリエ :: アーランド、黄昏、不思議<br />- ゆゆ式 :: 33, 12</p>","url":"https://social.mikutter.hachune.net/@toshi_a","avatar":"https://social.mikutter.hachune.net/system/accounts/avatars/000/000/002/original/cb269844c9f087e1.png","avatar_static":"https://social.mikutter.hachune.net/system/accounts/avatars/000/000/002/original/cb269844c9f087e1.png","header":"https://social.mikutter.hachune.net/headers/original/missing.png","header_static":"https://social.mikutter.hachune.net/headers/original/missing.png","moved":null,"source":null},"in_reply_to_id":null,"in_reply_to_account_id":null,"reblog":null,"content":"<p>みくのおっぱい大盛り、いいですね</p>","created_at":"2018-05-17T17:38:30+09:00","created":"2018-05-17T17:38:30+09:00","reblogs_count":0,"favourites_count":0,"reblogged":false,"favourited":false,"muted":false,"sensitive":false,"spoiler_text":"","visibility":"public","application":{"name":"mikutter Worldon","website":"https://github.com/cobodo/mikutter-worldon"},"language":"ja","pinned":false,"domain":"social.mikutter.hachune.net","emojis":[],"media_attachments":[],"mentions":[],"tags":[]}'
Benchmark.bm 10000 do |r|
r.report "parse" do
JSON.parse(json_str, symbolize_names: true)
end
end
操作