加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Simdjson:一个超高速的JSON解析工具

发布时间:2019-03-25 19:29:15 所属栏目:优化 来源:周大涛编译
导读:副标题#e# JSON文档在Internet上无处不在,服务器花费大量时间来解析这些文档。我们希望在进行完全验证(包括字符编码)时尽可能使用常用的SIMD指令来加速JSON本身的解析。 表现结果 simdjson使用的指令比最先进的解析器RapidJSON少四分之三,比sajson少百

以下函数将查找所有user.id整数:

  1. void simdjson_traverse(std::vector<int64_t> &answer, ParsedJson::iterator &i) { 
  2.   switch (i.get_type()) { 
  3.   case '{': 
  4.     if (i.down()) { 
  5.       do { 
  6.         bool founduser = equals(i.get_string(), "user"); 
  7.         i.next(); // move to value 
  8.         if (i.is_object()) { 
  9.           if (founduser && i.move_to_key("id")) { 
  10.             if (i.is_integer()) { 
  11.               answer.push_back(i.get_integer()); 
  12.             } 
  13.             i.up(); 
  14.           } 
  15.           simdjson_traverse(answer, i); 
  16.         } else if (i.is_array()) { 
  17.           simdjson_traverse(answer, i); 
  18.         } 
  19.       } while (i.next()); 
  20.       i.up(); 
  21.     } 
  22.     break; 
  23.   case '[': 
  24.     if (i.down()) { 
  25.       do { 
  26.         if (i.is_object_or_array()) { 
  27.           simdjson_traverse(answer, i); 
  28.         } 
  29.       } while (i.next()); 
  30.       i.up(); 
  31.     } 
  32.     break; 
  33.   case 'l': 
  34.   case 'd': 
  35.   case 'n': 
  36.   case 't': 
  37.   case 'f': 
  38.   default: 
  39.     break; 
  40.   } 
深入比较

如果您想了解各种解析器如何验证给定的JSON文件:

  1. make allparserscheckfile 
  2. ./allparserscheckfile myfile.json 

对于性能比较:

  1. make parsingcompetition 
  2. ./parsingcompetition myfile.json 

进行更广泛的比较:

  1. make allparsingcompetition 
  2. ./allparsingcompetition myfile.json 

【编辑推荐】

  1. SAP 开源 SCA 工具,扫描软件包依赖漏洞
  2. Gartner报告:正处于数据科学与机器学习工具 “大爆炸”的时代
  3. 可视化实时Web日志分析工具,堪称神器!
  4. 超 100000 个 GitHub 代码库泄露了 API 或加密密钥
  5. 如何阅读一份源代码?
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!