プロジェクト

全般

プロフィール

機能 #1246

json_pureの利用をやめる

toshi_a 初音7ヶ月前に追加.

ステータス:
新規
優先度:
通常
担当者:
-
対象バージョン:
開始日:
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

他の形式にエクスポート: Atom PDF