gpt4 book ai didi

xml - Delphi 中的 JSON 与 XML 解析速度

转载 作者:数据小太阳 更新时间:2023-10-29 01:41:10 29 4
gpt4 key购买 nike

我们正在创建一个使用大量 XML 解析的应用程序,我想也许可以使用 JSON,因为我们可以使用 JSON 作为 XML 的替代品。

我需要测试 JSON 或 XML 哪个更快,但想先在这里征求意见。

JavaScript 中的 JSON 是原生的,而且速度很快。肯定比解析 XML 快。但是在 Delphi 中没有用于执行此操作的本地类。

所以我的问题是 - 在 Delphi 中使用 XML 或 JSON 解析器库哪个更快?或者它们的速度相等?

如果它更快,那么您更喜欢 - Delphi Web Utils , JSON Delphi LibraryJSON Toolkit

最佳答案

有了一个编写良好的解析器,XML 和 JSON 将或多或少地具有相同的时间。您可以拥有一个慢速 JSON 解析器和一个快速 XML 解析器。

XML 的语法可能比 JSON 更复杂。

但瓶颈主要是从硬盘读取,而不是解析内容。

出于多种原因,我们将 JSON 用于 ORM 的客户端/服务器(但您会发现其他原因,我不想在这里挑衅,只是从我们的小实验中谈起):

  • 与 XML 一样,它是一种基于文本的、人类可读的格式,用于表示简单的数据结构和关联数组(称为对象);
  • 它更易于阅读(对于人类和机器而言)、实现起来更快,而且通常比 XML 更小;
  • 这是一种非常有效的数据缓存格式;
  • 它的布局允许在适当的位置重写为单独的以零结尾的 UTF-8 字符串,几乎没有浪费空间:此功能用于将表格结果的 JSON 快速转换为文本,无需内存分配或数据复制;
  • 它受 JavaScript 语言的原生支持,使其成为任何 AJAX(即 Web 2.0)应用程序中的完美序列化格式;
  • JSON 格式在众所周知且简单的 RFC 中指定;
  • JSON 和我们的 ORM 的默认文本编码都是 UTF-8,它允许存储和传送完整的 Unicode 字符集;
  • 自 .NET Framework 3.5 以来,它是在 Windows Communication Foundation (WCF) 中创建的 ASP.NET AJAX 服务使用的默认数据格式;因此微软正式“准备就绪”;
  • 对于二进制 blob 传输,没有 XML 中的 CDATA。因此,我们只需将二进制数据编码为 JSON 字符串中的十六进制或 Base64(使用更少的空间)。

关于解析速度,你可以看看我们的in-place parser and JSON writer from SQLite3 results .它针对速度进行了非常优化,而且速度很快。我们写了一个简单但efficient JSON serialization对于任何 TPersistent,包括集合。我们只需添加 a dynamic array JSON serializer ,这也非常快。

补充说明:

所有这些解析器都与您提到的不同,因为它们解析 JSON 内容并将其格式化为输入缓冲区内的文本:解析期间没有进行内存分配,因此它应该比其他解决方案更快。文本内容未转义,字段以 #0 结束,并计算指向文本开头的指针。所以要访问一个值,你只需使用指针来获取数据。它通常会立即解析几 MB 的 JSON 内容。

另请查看 JSON parser embedded in DWS .作者声称它很快。但是还是为每个对象分配了一个内存块。

关于xml - Delphi 中的 JSON 与 XML 解析速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304157/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com