我正在构建与Twitter API接口的类,我想知道PHP的内置XML或JSON解析器是否更快?Twitter将以任一格式向我发送相同的数据,因此PHP性能将决定我的选择.我正在使用php_apc,所以你可以忽略解析时间并假设我正在运行字节码.
谢谢!
更多:我只是想从数据中获取关联数组.我不是在做树行走,节点迭代或任何太复杂的事情.格式将始终相同.(我希望!)
亚当上面的评论说服我对它进行基准测试.使用https://twitter.com/status/mentions.[format],我发现simplexml_load_string()比json_decode()快得多.但差异实际上是一个误差范围.
Test #1 time (xml): 3.75221395493 seconds Test #2 time (xml): 4.1562371254 seconds Test #3 time (xml): 3.60420489311 seconds Test #4 time (xml): 3.85622000694 seconds Test #5 time (xml): 3.89622211456 seconds
与
Test #1 time (json): 4.53225803375 seconds Test #2 time (json): 4.06823205948 seconds Test #3 time (json): 4.03222990036 seconds Test #4 time (json): 3.80421590805 seconds Test #5 time (json): 3.88022208214 seconds
在下面的代码中(我已经将数据卷曲到文件,数据.[xml,json]).
Test #{$t} time ({$test}): " . ($end[$t] - $start[$t]). " seconds"; }
我没有做任何基准但是......
由于JSON只是嵌套字符串序列的描述,不需要提供DOM接口,属性解析和其他微妙的东西,我的猜测是JSON解析器比XML解析器更快.
当json返回是一个对象时,我倾向于发现simplexml_load_string()比json_decode()更快.
但是,使用json_decode($ string,true)将json作为数组返回实际上比使用对象快得多(在将数组与对象进行比较时,大多数情况都是如此).
在这种情况下,我看到json_decode()的速度是simplexml_load_string()的两倍.