JSON文档在互联网上无处不在,服务器会花费大量时间解析这些文档。我们希望在做全校验(包括字符编码)时尽可能使用常用的SIMD指令来加快JSON本身的解析速度。性能结果simdjson使用的指令比解析器RapidJSON少四分之三,比sajson少百分之五十。据我们所知,simdjson是一个完全验证的JSON解析器,在商品处理器上以每秒千兆字节的速度运行。在Skylake处理器上,twitter.json文件上各种处理器的解析速度(以GB/s为单位)如下所示。ParserGB/secsimdjson2.2RapidJSONEncodingValidation0.51RapidJSONEncodingValidation,in-situ0.71sajson(insitu,dynamic)0.70sajson(insitu,static)0.97dropbox0.14FASTJSON0.26gason0.85ultrajson0.42jsmn0.28cJSON0.34要求我们通过Visual1或更高版本支持Linux或macOS以及Windows等平台;具有高级矢量扩展指令集的处理器(即具有2013年发布的Haswell微架构的英特尔处理器和具有2017年编译器发布的Zen微架构的AMD处理器);最近的C++编译器(例如,GNUGCC或LLVMCLANG或VisualStudio2017),我们假设C++17。GNUGCC7或更高版本或用于LLVM的clang6或更高版本。许可证此代码根据Apache许可证2.0提供。Windows下,我们使用windows/dirent_portable.h文件(在我们的库代码之外)构建一些工具代码示例#include"simdjson/jsonparser.h"/...constchar*filename=...////得到使用任何你想要的JSON文档的字符串std::string_viewp=get_corpus(filename);已解析的Jsonpj;pj.allocateCapacity(p.size());//分配内存解析p.size()bytesconstintres=json_parse(p,pj);//解析成功返回0//解析完成!if(res!=0){//您可以使用“simdjson/simdjson.h”标头访问错误消息std::cout<<"Errorparsing:"<
