simdjson vs. JSON for Modern C++ (#247)
* New competitor. * Fixing makefile.
This commit is contained in:
parent
44722bddcf
commit
144b10b35d
|
@ -25,3 +25,6 @@
|
||||||
[submodule "dependencies/jsoncpp"]
|
[submodule "dependencies/jsoncpp"]
|
||||||
path = dependencies/jsoncpp
|
path = dependencies/jsoncpp
|
||||||
url = https://github.com/open-source-parsers/jsoncpp.git
|
url = https://github.com/open-source-parsers/jsoncpp.git
|
||||||
|
[submodule "dependencies/json"]
|
||||||
|
path = dependencies/json
|
||||||
|
url = https://github.com/nlohmann/json.git
|
||||||
|
|
9
Makefile
9
Makefile
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
|
|
||||||
.PHONY: clean cleandist
|
.PHONY: clean cleandist
|
||||||
COREDEPSINCLUDE = -Idependencies/rapidjson/include -Idependencies/sajson/include -Idependencies/cJSON -Idependencies/jsmn
|
COREDEPSINCLUDE = -Idependencies/json/single_include -Idependencies/rapidjson/include -Idependencies/sajson/include -Idependencies/cJSON -Idependencies/jsmn
|
||||||
EXTRADEPSINCLUDE = -Idependencies/jsoncppdist -Idependencies/json11 -Idependencies/fastjson/src -Idependencies/fastjson/include -Idependencies/gason/src -Idependencies/ujson4c/3rdparty -Idependencies/ujson4c/src
|
EXTRADEPSINCLUDE = -Idependencies/jsoncppdist -Idependencies/json11 -Idependencies/fastjson/src -Idependencies/fastjson/include -Idependencies/gason/src -Idependencies/ujson4c/3rdparty -Idependencies/ujson4c/src
|
||||||
# users can provide their own additional flags with make EXTRAFLAGS=something
|
# users can provide their own additional flags with make EXTRAFLAGS=something
|
||||||
architecture:=$(shell arch)
|
architecture:=$(shell arch)
|
||||||
|
@ -76,9 +76,9 @@ GASON_INCLUDE:=dependencies/gason/src/gason.h
|
||||||
UJSON4C_INCLUDE:=dependencies/ujson4c/src/ujdecode.c
|
UJSON4C_INCLUDE:=dependencies/ujson4c/src/ujdecode.c
|
||||||
CJSON_INCLUDE:=dependencies/cJSON/cJSON.h
|
CJSON_INCLUDE:=dependencies/cJSON/cJSON.h
|
||||||
JSMN_INCLUDE:=dependencies/jsmn/jsmn.h
|
JSMN_INCLUDE:=dependencies/jsmn/jsmn.h
|
||||||
|
JSON_INCLUDE:=dependencies/json/single_include/nlohmann/json.hpp
|
||||||
|
|
||||||
|
LIBS=$(RAPIDJSON_INCLUDE) $(JSON_INCLUDE) $(SAJSON_INCLUDE) $(JSON11_INCLUDE) $(FASTJSON_INCLUDE) $(GASON_INCLUDE) $(UJSON4C_INCLUDE) $(CJSON_INCLUDE) $(JSMN_INCLUDE)
|
||||||
LIBS=$(RAPIDJSON_INCLUDE) $(SAJSON_INCLUDE) $(JSON11_INCLUDE) $(FASTJSON_INCLUDE) $(GASON_INCLUDE) $(UJSON4C_INCLUDE) $(CJSON_INCLUDE) $(JSMN_INCLUDE)
|
|
||||||
|
|
||||||
EXTRAOBJECTS=ujdecode.o
|
EXTRAOBJECTS=ujdecode.o
|
||||||
all: $(MAINEXECUTABLES)
|
all: $(MAINEXECUTABLES)
|
||||||
|
@ -118,7 +118,7 @@ submodules:
|
||||||
-git submodule update --init --recursive
|
-git submodule update --init --recursive
|
||||||
-touch submodules
|
-touch submodules
|
||||||
|
|
||||||
$(SAJSON_INCLUDE) $(RAPIDJSON_INCLUDE) $(JSON11_INCLUDE) $(FASTJSON_INCLUDE) $(GASON_INCLUDE) $(UJSON4C_INCLUDE) $(CJSON_INCLUDE) $(JSMN_INCLUDE) : submodules
|
$(JSON_INCLUDE) $(SAJSON_INCLUDE) $(RAPIDJSON_INCLUDE) $(JSON11_INCLUDE) $(FASTJSON_INCLUDE) $(GASON_INCLUDE) $(UJSON4C_INCLUDE) $(CJSON_INCLUDE) $(JSMN_INCLUDE) : submodules
|
||||||
|
|
||||||
parse: benchmark/parse.cpp $(HEADERS) $(LIBFILES)
|
parse: benchmark/parse.cpp $(HEADERS) $(LIBFILES)
|
||||||
$(CXX) $(CXXFLAGS) -o parse $(LIBFILES) benchmark/parse.cpp $(LIBFLAGS)
|
$(CXX) $(CXXFLAGS) -o parse $(LIBFILES) benchmark/parse.cpp $(LIBFLAGS)
|
||||||
|
@ -179,6 +179,7 @@ distinctuseridcompetition: benchmark/distinctuseridcompetition.cpp $(HEADERS) $(
|
||||||
$(CXX) $(CXXFLAGS) -o distinctuseridcompetition $(LIBFILES) benchmark/distinctuseridcompetition.cpp -I. $(LIBFLAGS) $(COREDEPSINCLUDE)
|
$(CXX) $(CXXFLAGS) -o distinctuseridcompetition $(LIBFILES) benchmark/distinctuseridcompetition.cpp -I. $(LIBFLAGS) $(COREDEPSINCLUDE)
|
||||||
|
|
||||||
parsingcompetition: benchmark/parsingcompetition.cpp $(HEADERS) $(LIBFILES) submodules
|
parsingcompetition: benchmark/parsingcompetition.cpp $(HEADERS) $(LIBFILES) submodules
|
||||||
|
@echo "In case of build error due to missing files, try 'make clean'"
|
||||||
$(CXX) $(CXXFLAGS) -o parsingcompetition $(LIBFILES) benchmark/parsingcompetition.cpp -I. $(LIBFLAGS) $(COREDEPSINCLUDE)
|
$(CXX) $(CXXFLAGS) -o parsingcompetition $(LIBFILES) benchmark/parsingcompetition.cpp -I. $(LIBFLAGS) $(COREDEPSINCLUDE)
|
||||||
|
|
||||||
allparsingcompetition: benchmark/parsingcompetition.cpp $(HEADERS) $(LIBFILES) $(EXTRAOBJECTS) submodules
|
allparsingcompetition: benchmark/parsingcompetition.cpp $(HEADERS) $(LIBFILES) $(EXTRAOBJECTS) submodules
|
||||||
|
|
|
@ -20,6 +20,9 @@
|
||||||
|
|
||||||
#include "sajson.h"
|
#include "sajson.h"
|
||||||
|
|
||||||
|
#include <nlohmann/json.hpp>
|
||||||
|
using json = nlohmann::json;
|
||||||
|
|
||||||
#ifdef ALLPARSER
|
#ifdef ALLPARSER
|
||||||
|
|
||||||
#include "fastjson.cpp"
|
#include "fastjson.cpp"
|
||||||
|
@ -158,6 +161,11 @@ int main(int argc, char *argv[]) {
|
||||||
sajson::mutable_string_view(p.size(), buffer))
|
sajson::mutable_string_view(p.size(), buffer))
|
||||||
.is_valid(),
|
.is_valid(),
|
||||||
true, memcpy(buffer, p.data(), p.size()), repeat, volume, !just_data);
|
true, memcpy(buffer, p.data(), p.size()), repeat, volume, !just_data);
|
||||||
|
size_t expected = json::parse(p.data(), p.data() + p.size()).size();
|
||||||
|
BEST_TIME("nlohmann-json", json::parse(buffer, buffer + p.size()).size(),
|
||||||
|
expected, memcpy(buffer, p.data(), p.size()), repeat, volume,
|
||||||
|
!just_data);
|
||||||
|
|
||||||
#ifdef ALLPARSER
|
#ifdef ALLPARSER
|
||||||
std::string json11err;
|
std::string json11err;
|
||||||
BEST_TIME("dropbox (json11) ",
|
BEST_TIME("dropbox (json11) ",
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit a015b78e81c859b88840cb0cd4001ce1fe5e7865
|
Loading…
Reference in New Issue