资源简介
国外性能优化方向的大牛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
相关资源
- Notepad++ 32位 jsonview插件
- notepad++ json格式化插件
- Jsonviewer2 for Notepad++ 64 bit
-
Notepad++xm
l格式化插件和json格式化插 -
Volley获取json和xm
l数据解析显示 - eCharts全国及各省、市、县地图层jso
- 编译好的json_lib.lib 包含64位,32位,头
- json格式化工具.zip
- 易语言JSON解析模块2.0源码
- echart地图 34省js及json文件 344地级js
- 全国各省市地json图
- 宁夏省市地图js和json文件
- echarts生成json地图最新版
- 中国国界和省界的GeoJson格式数据
- 中国地图_GeoJson文件
- 全国市级地图json文件
- echart 全国/各省份以及各地级市JSON文
- Echarts省市级地图js,json数据
- 全国各省、市、区json的Echarts地图
- 2018行政区划数据_省市区街居_五级_
- Json.net
- Notepad++的Json格式化插件win32和x64两版
- json获取datatable后生成table分页显示c
- 实现yarnlock与packagelockjson相互转换
- advanced rest client definitions.json
- 复杂的json字符串解析真实案例
- .net2.0中生成和解析JSON
- 2018年5月更新最新全国省市区县geojs
- echarts全国省市地图js、json数据
- Newtonsoft.json.dll v4.5.11
评论
共有 条评论