資源簡(jiǎn)介
國外性能優(yōu)化方向的大牛lemire 基于simd指令開發(fā)的一套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?<??}
??std::cout?<}
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???????sajson_traverse(answer?node.get_array_element(i));
????}
????break;
??}
??case?TYPE_object:?{
????auto?length?=?node.get_length();
????for?(auto?i?=?0u;?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????????????????++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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個(gè)文件信息
- 上一篇:信息論基礎(chǔ)答案英文版
- 下一篇:SLIPatch_v1.5_beta
評(píng)論
共有 條評(píng)論