代码之家  ›  专栏  ›  技术社区  ›  Andrew Hedges

是什么减少了PHP服务器的负载:simpleXML还是json-decode?

  •  7
  • Andrew Hedges  · 技术社区  · 16 年前

    我开始用PHP开发一个Web应用程序,我希望它会变得非常流行,让我出名和富有。-)

    如果到了那个时候,我决定是用simpleXML将API的数据解析为XML,还是使用json-decode,可能会对应用的可伸缩性产生影响。

    有人知道哪种方法对服务器更有效吗?

    更新: 我做了一个初步的测试,看看哪种方法更有效。看来 json_decode 执行速度比 simplexml_load_string .这并不是决定性的,因为它不测试并发进程的可伸缩性。我的结论是,由于SimpleXML支持XPath表达式,我暂时将使用SimpleXML。

    <?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>
    

    结果:

    XML elapsed: 9.9836
    JSON elapsed: 8.3606
    
    3 回复  |  直到 16 年前
        1
  •  10
  •   Randy    16 年前

    作为“更轻”的格式,我希望JSON在服务器上的压力会稍小一些,但我怀疑随着站点的流行,它将是您发现自己所要处理的最大的性能问题。使用你更喜欢的格式。

    或者,如果您知道如何构建您的数据,您可以尝试创建一个XML格式的版本和一个JSON格式的版本,然后在您的设置中运行几十万次,看看它是否有显著的区别。

        2
  •  3
  •   Keith Twombley    16 年前

    只有一种方法可以在应用程序中使用数据来确定哪种方法在服务器上更容易。

    测试一下!

    我将生成一些类似于您将要翻译的数据,并使用其中一个单元测试框架使用simpleXML和json-decode对其进行几千次解码,足以获得有意义的结果。然后你可以告诉我们什么起作用了。

    抱歉,这不是你想要的答案,但实际上,这是唯一正确的答案。祝你好运!

        3
  •  3
  •   James Hall    16 年前

    这不是问题的真正答案,但是你可以等到有很多用户访问你的系统。你可能会惊讶于你的瓶颈所在:

    http://gettingreal.37signals.com/ch04_Scale_Later.php