我们正在创建一个使用大量XML解析的应用程序,我想也许可以使用JSON,因为我们可以使用JSON作为XML的替代品。
我需要测试哪个是更快的JSON或XML,但想先在这里提出意见。
JavaScript中的JSON是原生的,速度很快。当然比解析XML更快。但是在Delphi中没有本地类可以做到这一点。
所以我的问题是 - 使用XML或JSON解析器库在Delphi中哪个更快?或者它们的速度相等?
如果它比你喜欢的更快 - Delphi Web Utils,JSON Delphi Library或JSON Toolkit
答案 0 :(得分:11)
使用编写良好的解析器,XML和JSON将具有或多或少相同的时序。您可以使用慢速JSON解析器和快速XML解析器。
对XML来说可能有点慢,因为语法比JSON更复杂。
但瓶颈主要是从硬盘读取,而不是解析内容。
我们使用JSON作为我们ORM的客户端/服务器,原因有几个(但你会发现其他人,我不想在这里喋喋不休,只是从我们的小实验中说出来):
关于解析速度,您可以查看我们的in-place parser and JSON writer from SQLite3 results。它非常适合速度,而且速度快。我们为任何TPersistent编写了一个简单的efficient JSON serialization,包括集合。我们只需添加a dynamic array JSON serializer,这也非常快。
附加说明:
所有这些解析器与您提到的解析器不同,因为它们解析JSON内容并将其格式化为输入缓冲区内的文本:解析期间没有内存分配,因此它应该比其他解决方案更快。文本内容未转义,字段#0结束,并且计算指向文本开头的指针。因此,要访问值,只需使用指针即可获取数据。它通常会毫不犹豫地解析一些MB的JSON内容。
另请查看JSON parser embedded in DWS。作者声称它很快。但是仍然为每个对象分配了一个内存块。