是什么降低了PHP服务器的负载:SimpleXML还是json_解码?
我开始用PHP开发一个web应用程序,我希望它会变得非常流行,并使我出名和富有。:-) 如果到时候,我的决定是使用SimpleXML将API的数据解析为XML,还是使用json_解码,可能会改变应用程序的可伸缩性 有人知道这些方法中哪一种对服务器更有效吗 更新:我运行了一个初步测试,看看哪种方法性能更好。似乎是什么降低了PHP服务器的负载:SimpleXML还是json_解码?,php,performance,scalability,simplexml,json,Php,Performance,Scalability,Simplexml,Json,我开始用PHP开发一个web应用程序,我希望它会变得非常流行,并使我出名和富有。:-) 如果到时候,我的决定是使用SimpleXML将API的数据解析为XML,还是使用json_解码,可能会改变应用程序的可伸缩性 有人知道这些方法中哪一种对服务器更有效吗 更新:我运行了一个初步测试,看看哪种方法性能更好。似乎json\u decode的执行速度略快于simplexml\u load\u string。这并不是决定性的结论,因为它没有测试诸如并发进程的可伸缩性之类的东西。我的结论是,我将暂时使用S
json\u decode
的执行速度略快于simplexml\u load\u string
。这并不是决定性的结论,因为它没有测试诸如并发进程的可伸缩性之类的东西。我的结论是,我将暂时使用SimpleXML,因为它支持XPath表达式
<?php
$xml = file_get_contents('sample.xml');
$json = file_get_contents('sample.js');
$iters = 1000;
// simplexml_load_string
$start_xml = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
$obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
}
$end_xml = microtime(true);
// json_decode
$start_json = microtime(true);
for ($i = 0; $i < $iters; ++$i) {
$obj = json_decode($json);
}
$end_json = microtime(true);
?>
<pre>XML elapsed: <?=sprintf('%.4f', ($end_xml - $start_xml))?></pre>
<pre>JSON elapsed: <?=sprintf('%.4f', ($end_json - $start_json))?></pre>
作为“更轻”的格式,我希望JSON在服务器上的压力会稍微小一些,但我怀疑,随着网站越来越受欢迎,它是否会成为您所面临的最大性能问题。使用你更喜欢的格式
或者,如果您知道如何构建数据,您可以尝试创建一个XML格式的版本和一个JSON格式的版本,然后对您的设置运行几十万次,看看它是否有明显的不同。只有一种方法可以确定在应用程序的服务器上使用数据哪一种更容易 试试看 我将生成一些看起来与您将要翻译的内容类似的数据,并使用一个单元测试框架使用SimpleXML和json_decode对其进行数千次解码,足以获得有意义的结果。然后你可以告诉我们什么起作用了
抱歉,这不是你想要的答案,但事实上,这是唯一正确的方法。祝你好运 这不是问题的答案,但你可以等到有很多用户访问你的系统。您可能会惊讶于瓶颈所在:
JSON的格式不那么冗长。仅保存的字节就是一大好处。但最重要的是,simplexml创建的simplexml资源比json_decode()创建的简单本机PHP结构更重。最重要的是,simplexml在过去几年中出现了许多内存泄漏错误,例如:。simplexml唯一简单的地方就是它的API。除此之外,它不是非常强大,效率低下,而且有缺陷。你的基准并不非常现实。当然,您将以某种方式操纵数据,而不仅仅是加载数据?至少试着遍历一些值或其他东西。加载时间甚至可能不是您最终要完成的实际处理的大部分。
XML elapsed: 9.9836
JSON elapsed: 8.3606