WEB上にあるとあるXMLを読み込むのに、以下のようにやると非常に遅い。
んー...
simplexml_load_fileを使ってXMLを読み込む
$xml = simplexml_load_file('http://hoge.com/sample.xml');
(5.019sec)
んー...
XMLを提供している側のせいかだろうかと思いつつ、simplexml_load_fileを使うのを止めて代わりにPEAR:HTTP_Client+simplexml_load_stringを使って以下のように変えてみたらば。
超速い!なんぞ。キャッシュも関係ないっぽい。
読み込むXMLのサイズが大きくなるとSimpleXMLは重くなるという噂を聞いたので、対象とするXMLを変えてみる。
...。
simplexml_load_fileの方が遅いのは変わらないけれども、それほど極端な差じゃないな。
あと形式によっても全然違う。
何か書式に問題があるのかなぁ。
HTTP_Clientを使ってXMLを読み込む
require_once 'HTTP/Client.php';
$client = new HTTP_Client();
$client->get('http://hoge.com/sample.xml');
$response = $client->currentResponse();
$xml = simplexml_load_string($response['body']);
var_dump($xml);
(0.040sec)
超速い!なんぞ。キャッシュも関係ないっぽい。
読み込むXMLのサイズが大きくなるとSimpleXMLは重くなるという噂を聞いたので、対象とするXMLを変えてみる。
ニコニコ動画APIの場合
- simplexml_load_fileを使ってXMLを読み込む → 0.131sec
- HTTP_Clientを使ってXMLを読み込む → 0.014sec
Tumblr APIの場合
- simplexml_load_fileを使ってXMLを読み込む → 0.841sec
- HTTP_Clientを使ってXMLを読み込む → 0.709sec
ほぼ日のRSSの場合
- simplexml_load_fileを使ってXMLを読み込む → 0.028sec
- HTTP_Clientを使ってXMLを読み込む → 0.018sec
このブログの場合
- simplexml_load_fileを使ってXMLを読み込む → 0.883sec
- HTTP_Clientを使ってXMLを読み込む → 0.640sec
...。
simplexml_load_fileの方が遅いのは変わらないけれども、それほど極端な差じゃないな。
あと形式によっても全然違う。
何か書式に問題があるのかなぁ。
暫定的な結論
どうして先に書いたような差が生まれてるのかよく分からないけど、とりあえずPEAR:HTTP_Client+simplexml_load_stringで改善できるのならってことでそっちを使うことにする。謎だ。- tags:
- php,
- programming