BT

XMLでもJSONと同等のパフォーマンスを実現できる

| 作者: Jan Stenberg フォローする 29 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2013年8月15日. 推定読書時間: 3 分 |

原文(投稿日: 2013/08/13 )へのリンク

JSONの軽やかなペイロードに比べて,"ファット"なXMLは何と遅く,リソースを浪費するものなのだろうか – そう信じる多くの意見に対して,MarklogicのリードエンジニアであるDavid Lee氏は怯まなかった。33の異なるドキュメントによる実験と,もっとも一般的に使用されているブラウザやオペレーティングシステム上での1,200に及ぶテストを実施して,その結果を発表したのだ。氏が発見したのは,ユーザエクスペリエンス全体としてのパフォーマンス(転送,解析,ドキュメントのクエリ)を比較したとき,XMLとJSONフォーマットはほとんど同じだという事実である。

実験のために氏は,Webサーバが配信したドキュメントをブラウザで解析してクエリを行うという,XMLとJSONドキュメントのユースケースを模倣するテスト環境を構築して,それを一般公開した。サーバがクライアントにソースデータを提供し,クライアントから送信される結果を収集する,という構成だ。クライアントはブラウザ上で動作するJavaScriptアプリケーションで,jQueryのパフォーマンス測定部分以外は,JavaScriptを使って手作業で記述されたコードを使用して測定を行う。

テストには100kBから1MBまでの7つのドキュメントを使用する。ドキュメントはそれぞれ,2つのJSONと3つのXMLバリアントで構成されている。さらに氏は,さまざまなデバイスやブラウザ,おペレーティングシステムやネットワークについても,テストで取り上げることを試みている。テストは "クラウドソーシング" で実施された。すなわち,テスト環境のURLをパブリックなものとして,メーリングリストやソーシャルメディアサイトで広く公開したのだ。現在までに1,200件,個別に成功したテスト結果が集まっている。一般的に使用されているブラウザやオペレーティングシステムはほとんどカバーできた。氏は自身の記事において,すべてのテストデータと個別のテスト結果について資料を作成している。

実験の結果を元に氏が描いた結論は,概ね次のようなものだ。

  • パース速度は使用するテクニックによってまちまちだ。純粋なJavaScriptによるパース処理では,一般的にXMLの方がJSONよりもパフォーマンスがよいが,クエリ速度はJSONの方が速い。ただしどちらについても,反対の結果となる例外が存在する。
  • JavaScriptのライブラリであるjQueryの使用は,JSONでも相当のペナルティとなるが,XMLではさらに顕著だ。
  • は非常に大きなものであっても,格納しているコンテント情報がほぼ同じならば,圧縮方法に関わりなく,ほとんど同じサイズに圧縮される。
  • 圧縮されたドキュメントは,JSONあるいはXMLとしてさまざまなデバイスへのドキュメント転送に要する時間は,マークアップの形式には関係なく,実質的にデバイス毎に同じである。

実験の結果を踏まえて氏は,アーキテクトや開発者に対していくつかの提言をしている。

  • トータルパフォーマンスにおいては,可能な限りHTTP圧縮を使うことが,唯一の最重要なファクタである。
  • 転送とクエリのためにマークアップを最適化せよ。
  • データ転送やパース処理,クエリが他の問題に比較して重大なものでない限り,最適化を試みてはならない。

最後に氏は,次のようにアドバイスする。

誰も信用しないことです。
言われたことを盲目的に信じてはいけません。実験するのです。自分自身のデータとコードを使って,自分自身のユーザとデバイスでテストしなさい。"自明"なことが常に真実とは限りません。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT