资源简介
国外性能优化方向的大牛lemire 基于simd指令开发的一套json 解析模块,速度比目前最多的rapidjson解析速度还要快上3-4倍,欢迎大家下载使用
代码片段和文件信息
#include “simdjson/jsonparser.h“
#include
#include
#include
#include “benchmark.h“
// #define RAPIDJSON_SSE2 // bad for performance
// #define RAPIDJSON_SSE42 // bad for performance
#include “rapidjson/document.h“
#include “rapidjson/reader.h“
#include “rapidjson/stringbuffer.h“
#include “rapidjson/writer.h“
#include “sajson.h“
using namespace rapidjson;
using namespace std;
bool equals(const char *s1 const char *s2) { return strcmp(s1 s2) == 0; }
void remove_duplicates(vector &v) {
std::sort(v.begin() v.end());
auto last = std::unique(v.begin() v.end());
v.erase(last v.end());
}
void print_vec(vector &v) {
for (auto i : v) {
std::cout << i << “ “;
}
std::cout << std::endl;
}
void simdjson_traverse(std::vector &answer ParsedJson::iterator &i) {
switch (i.get_type()) {
case ‘{‘:
if (i.down()) {
do {
bool founduser = equals(i.get_string() “user“);
i.next(); // move to value
if (i.is_object()) {
if (founduser && i.move_to_key(“id“)) {
if (i.is_integer()) {
answer.push_back(i.get_integer());
}
i.up();
}
simdjson_traverse(answer i);
} else if (i.is_array()) {
simdjson_traverse(answer i);
}
} while (i.next());
i.up();
}
break;
case ‘[‘:
if (i.down()) {
do {
if (i.is_object_or_array()) {
simdjson_traverse(answer i);
}
} while (i.next());
i.up();
}
break;
case ‘l‘:
case ‘d‘:
case ‘n‘:
case ‘t‘:
case ‘f‘:
default:
break;
}
}
std::vector simdjson_computestats(const std::string_view &p) {
std::vector answer;
ParsedJson pj = build_parsed_json(p);
if (!pj.isValid()) {
return answer;
}
ParsedJson::iterator i(pj);
simdjson_traverse(answer i);
remove_duplicates(answer);
return answer;
}
void sajson_traverse(std::vector &answer const sajson::value &node) {
using namespace sajson;
switch (node.get_type()) {
case TYPE_ARRAY: {
auto length = node.get_length();
for (size_t i = 0; i < length; ++i) {
sajson_traverse(answer node.get_array_element(i));
}
break;
}
case TYPE_object: {
auto length = node.get_length();
for (auto i = 0u; i < length; ++i) {
if (equals(node.get_object_key(i).data() “user“)) { // found a user!!!
auto uservalue = node.get_object_value(i); // get the value
if (uservalue.get_type() ==
TYPE_object) { // the value should be an object
auto uservaluelength = uservalue.get_length();
for (auto j = 0u; j < uservaluelength;
++j) { // go through the children
if (equals(uservalue.get_object_key(j).data()
“id“)) { // ah ah found id
auto v = uservalue.get_object_value(j);
if (v.get_type() == TYPE_INTEGER
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-02-23 00:28 simdjson-master\
文件 264 2019-02-23 00:28 simdjson-master\.appveyor.yml
目录 0 2019-02-23 00:28 simdjson-master\.circleci\
文件 135 2019-02-23 00:28 simdjson-master\.circleci\config.yml
文件 105 2019-02-23 00:28 simdjson-master\.drone.yml
文件 6 2019-02-23 00:28 simdjson-master\.gitignore
文件 987 2019-02-23 00:28 simdjson-master\.gitmodules
文件 241 2019-02-23 00:28 simdjson-master\.travis.yml
文件 70 2019-02-23 00:28 simdjson-master\AUTHORS
文件 1349 2019-02-23 00:28 simdjson-master\CMakeLists.txt
文件 11356 2019-02-23 00:28 simdjson-master\LICENSE
文件 7474 2019-02-23 00:28 simdjson-master\Makefile
文件 6644 2019-02-23 00:28 simdjson-master\Notes.md
文件 20284 2019-02-23 00:28 simdjson-master\README.md
文件 3885 2019-02-23 00:28 simdjson-master\amalgamation.sh
目录 0 2019-02-23 00:28 simdjson-master\benchmark\
文件 195 2019-02-23 00:28 simdjson-master\benchmark\CMakeLists.txt
文件 14803 2019-02-23 00:28 simdjson-master\benchmark\benchmark.h
文件 7680 2019-02-23 00:28 simdjson-master\benchmark\distinctuseridcompetition.cpp
目录 0 2019-02-23 00:28 simdjson-master\benchmark\linux\
文件 2645 2019-02-23 00:28 simdjson-master\benchmark\linux\linux-perf-events.h
文件 5291 2019-02-23 00:28 simdjson-master\benchmark\minifiercompetition.cpp
文件 7942 2019-02-23 00:28 simdjson-master\benchmark\parse.cpp
文件 7728 2019-02-23 00:28 simdjson-master\benchmark\parseandstatcompetition.cpp
文件 9586 2019-02-23 00:28 simdjson-master\benchmark\parsingcompetition.cpp
文件 5643 2019-02-23 00:28 simdjson-master\benchmark\statisticalmodel.cpp
目录 0 2019-02-23 00:28 simdjson-master\dependencies\
目录 0 2019-02-23 00:28 simdjson-master\dependencies\cJSON\
目录 0 2019-02-23 00:28 simdjson-master\dependencies\fastjson\
目录 0 2019-02-23 00:28 simdjson-master\dependencies\gason\
目录 0 2019-02-23 00:28 simdjson-master\dependencies\jsmn\
............此处省略332个文件信息
- 上一篇:信息论基础答案英文版
- 下一篇:SLIPatch_v1.5_beta
相关资源
- echarts全国省市地图json文件
- maven+ajax+json
- 全国各个省份echarts省市县级地图jso
- Echars世界地图、全国地图、全省地图
- echarts地图全国各个地区坐标数据ech
- 全国各个省市echarts 地图json数据
- 天气预报json解析
- 利用Json 实现的天气预报
- 全球GEOJSON
- Echarts地图各省JS及JSON文件
- cxf集成Spring的restful WebService接口以J
- 全国省市县及外国gis地图json数据
- JsonCpp 编译库lib dll VS2015版
- cpp-zzzJSON是一个纯C实现的最快JSON解析
- 全国地图json到市级
- 全国所有省市区县地图json
- google浏览器的十个插件
- 全国省市县地图json文件具体到区县
- qt 局域网图像(json文件打包)传输
- coco数据集标签文件-instances_minival201
- VensimDSS6.4e.7z
- grib2json--grib2文件转换成json格式
- jsoncppvs2015编译文件
- eacharts map地图json数据包及案例dome
- VUE.js+element-ui实现JSON编辑器
- 基于STM32与和风天气API的交互系统
- jsoncpp源码+VS2017编译32和64位静态库
- 英汉汉英词库 json格式
- Jtopo+json格式数据代码
- imdb完整数据集
评论
共有 条评论