【发布时间】:2010-11-01 17:42:23
【问题描述】:
我正在使用一个以 XML 或 JSON 格式提供大型结果集的 Web 服务。 哪种格式会更快或更好(基于性能)?另外我应该使用哪种语言来解析 XML/JSON?我应该使用 PHP 还是 JavaScript?
【问题讨论】:
标签: php javascript xml json
我正在使用一个以 XML 或 JSON 格式提供大型结果集的 Web 服务。 哪种格式会更快或更好(基于性能)?另外我应该使用哪种语言来解析 XML/JSON?我应该使用 PHP 还是 JavaScript?
【问题讨论】:
标签: php javascript xml json
“PHP 或 JavaScript”听起来像是一个奇怪的选择:PHP 通常用作服务器端语言,而 JavaScript 通常用作客户端 -副语言。
你的情况如何?是什么让您特别推荐这两种语言?如果您可以提供有关您正在尝试做的事情的更多信息,那将有很大帮助。 (我们不知道您是在开发 Web 应用程序、批处理工具还是 GUI 应用程序等)
我怀疑 JSON 会比 XML 更紧凑一些,尽管如果它们压缩数据,您很可能会发现它们最终会占用相同的带宽(因为 XML 的许多“膨胀”很容易压缩)。
与以往一样,找出答案的最佳方法是使用一些真实数据测试特定的 Web 服务。概括性不是决策的良好基础。
【讨论】:
两者各有优势:
JSON
$dataStructure = JSON_decode($serializedString);,完成。XML
使用哪种语言处理结果集的问题有点荒谬。 javascript 是客户端*,php 是服务器端。所以,这取决于你想对结果集做什么。
您可以直接将结果传递给浏览器/js,而无需在服务器端做任何事情,让客户端进行过滤和渲染。这在某些情况下可能有意义,但通常不是您想要的。
我的建议:如果可能,请使用 JSON。
【讨论】:
我会选择 JSON,您无需支付“尖括号税”。 PHP 和 Javascript 之间的选择与数据所需的处理量有关(我在这里进行了一次飞跃)。
大量处理,使用 PHP 所以它是服务器端。很少处理使用 Javascript 来获得响应更快的页面(通过 AJAX 加载数据)。
【讨论】:
虽然语言/工具组合之间的性能方面确实存在很大差异,但最终 xml 和 json 在使用平台的最佳工具时往往具有相似的性能特征。也就是说,您不会再找到两倍或更多的速度。文本格式的理论限制相似。在这方面,几乎所有用例都“足够好”。
因此,对于您的任务,我将更多地关注工具支持。除此之外,格式选择不太可能是最重要的考虑因素。
就像 Jon 提到的,PHP 和 Javascript 的比较听起来很奇怪......苹果和橘子左右。
【讨论】:
可能遗漏的一件事是 JavaScript 客户端不必解析 JSON,因此您将在那里获得性能优势。浏览器会将 XML 解析为 DOM 并将其交给您的回调,然后您需要从该 DOM 中提取您需要的信息。使用 JSON,您可以返回一个对象,并且不再需要从 DOM 中提取。
【讨论】:
我认为你必须自己测量它。性能取决于:
所以你可以看到有很多变量。
您使用的网络服务是否需要更长的时间才能以一种格式组装数据而不是另一种格式?
解析 JSON 和 XML 有很多选项,所以不要将自己限制在 PHP 或 Javascript(如果您有选择的话)。最后,如果您从 Web 服务请求,您将承担网络传输成本、连接设置等开销。因此,解析性能所节省的任何时间都可以忽略不计。您的努力可能最好花在其他地方。
我想我没有回答你的问题,除了给你更多的思考!
【讨论】:
你应该使用python,最好:)
至于格式,我猜 JSON 会快一点,但要看细节,而且这个任务无论如何都是网络绑定的。
【讨论】:
如果你正在使用带有ajax的应用程序,那么你应该选择Javascript在客户端处理数据,这将减少服务器上php的使用,意味着更高效的服务器端。您可以将结果集存储在 json 文件中,然后可以在客户端使用 javascript 调用它,这将是最好的方法,因为这不会消耗您在服务器上的资源,并且数据将在客户端进行处理。在这里,我将优先考虑 json 而不是 xml,因为 xml 比 json 需要更多的空间来存储,因为它的标签样式和 json 就像 javascript 中的一个数组,它将比 xml 更快。在服务器端同样的事情,你可以轻松地将你的 json 数组转换为 php 数组(只需参考 PHP 中的 json_decode 函数)。
现在 json 很流行,因为它易于使用且速度更快。
为了获得更快的性能,您应该减少服务器端的数据处理,而应该使用客户端资源,这种方法将为您的应用程序提供速度和成本效益。
【讨论】: