Simdjson:一个超高速的JSON解析工具(2)
你需要一个像clang或gcc这样的最新编译器。我们建议至少使用GNU GCC / G ++ 7或LLVM clang 6.例如,您可以使用brew安装最新的编译器:
可选:您需要通过设置CC和CXX变量告诉cmake您希望使用哪个编译器。bash下,你可以用诸如命令这样做 构建:在项目存储库中,执行以下操作:
默认情况下,它构建一个共享库(例如,Linux上的libsimdjson.so)。 您可以构建一个静态库:
在某些情况下,您可能希望指定编译器,尤其是在系统上的默认编译器太旧的情况下。您可以按以下步骤操作: 用法(使用Visual Studio在Windows上进行CMake) 我们假设您有一台普通的Windows PC,至少包含Visual Studio 2017和支持AVX2的x64处理器(2013 Intel Haswell或更高版本)。 从GitHub获取simdjson代码,例如,使用 GitHub Desktop 克隆它; 安装 CMake 。安装时,请确保 在simdjson中创建一个子目录,例如 使用shell,转到这个新创建的目录;
最后一个命令在新创建的目录中创建了一个Visual Studio解决方案文件(例如 Windows,Linux和MacOS上的 vcpkg 用户可以 在Linux和MacOS上:
将构建并安装 在Windows(64位)上:
将构建并安装
将构建并安装 这些命令还将打印出有关如何使用MSBuild或基于CMake的项目库的说明。 如果您发现 json2json mydoc.json json2json -d mydoc.json minify mydoc.json`缩小JSON文档,将结果输出到标准输出。缩小意味着删除不需要的空格字符。 范围我们提供快速解析器。它根据各种规格完全验证输入。解析器构建一个有用的不可变(只读)DOM(文档 – 对象模型),以后可以访问它。 为了简化工程,我们做了一些假设: 我们支持UTF-8(以及ASCII),没有别的(没有拉丁语,没有UTF-16)。我们不认为这是一个真正的限制,因为我们认为没有任何严重的应用程序需要在没有ASCII或UTF-8编码的情况下处理JSON数据; JSON文档中的所有字符串最多可包含UTF-8(4GB)中的4294967295个字节。要强制执行此约束,我们拒绝解析包含超过4294967295字节(4GB)的文档。这应该适应大多数JSON文档; 我们假设AVX2支持在AMD和英特尔生产的所有最新主流x86处理器中都可用。尽管可以完成,但不包括对非x86处理器的支持。我们计划支持ARM处理器(请求帮助); 如果发生故障,我们只会报告故障,而不会指出问题的性质。(这可以在不影响性能的情况下轻松改进); 在规范允许的情况下,我们允许对象内的重复键(像sajson这样的其他解析器也这样做); 性能针对跨越至少几十千字节到几兆字节的JSON文档进行了优化:必须解析许多小型JSON文档或一个真正庞大的JSON文档的性能问题是不同的。 我们的目标不是提供通用的JSON库。像RapidJSON这样的库提供的不仅仅是解析,它还可以帮助您生成JSON并提供各种其他方便的功能。我们只解析文档。 特征输入字符串未修改,(像sajson和RapidJSON这样的解析器使用输入字符串作为缓冲区)。 (编辑:ASP站长网) |