前言
不推荐使用此框架,不推荐使用此框架,不推荐使用此框架!!!
推荐使用替代项目:cpp-json-test
nativejson-benchmark是一个 C++JSON解析库 基准测试框架。
项目地址: https://github.com/miloyip/nativejson-benchmark
通过此框架,可以直观且”便捷”的 测试出 一个C++JSON解析库的优劣。
旨在帮助开发者深入了解各个库处理JSON数据的能力,以便根据具体需求选择最优解决方案。
事实证明,此项目跨平台兼容性极差,且较长时间未更新,BUG巨多。
经过半天的尝试,终于能正常运行了,下面给出基本示例。
1 项目安装、修改和运行
1.1 克隆库
随便找一个文件夹进入,然后在终端执行命令:
git clone https://github.com/miloyip/nativejson-benchmark.git
1.2 更新库文件
进入刚下载的文件夹,执行:
git submodule update --init
1.3 删除大部分库,避免兼容问题
由于许多库已更新,配合此项目存在兼容性问题,建议删除。(成功运行后可以再加回来。)
1.3.1 删除各个库的测试文件
进入src/test/
文件夹,保留rapidjsontest.cpp
文件,其他全删。
(也可以保留rapidjson
开头的全部文件,同一个库的,所以不会冲突。)
(框架是json基准测试,rapidjsontest.cpp
测试文件作为本项目的基准,所以不能删。)
1.3.2 删除C语言库文件
进入src/cjsonlibs/
文件夹,保留cjson_all.c
,其他全删。
(这个文件其实也没用,但是全删了会使项目jsonclib
静态库内容为空,不生成,导致链接错误。)
1.3.3 删除库源码文件
进入thirdparty/
文件夹,保留cJSON
和rapidjson
文件夹,其他全删。
1.4 生成MSVC解决方案
1.4.1 下载premake5.exe
,放入build/
文件夹
https://premake.github.io/download/
官网提供了构建好的二进制版本,直接下载解压,然后复制粘贴就行了。
1.4.2 修改build/premake5.lue
重头戏!!
lua脚本写的真是一拖答辩,很多地方需要修改……
使用任意文本编辑器打开build/premake5.lue
文件,建议编辑器的查找功能,不然容易漏掉。
至少需要修改如下内容:
- 第17行的
buildoptions
指令,右侧字符串内容删除-Wextra
参数。
(改成buildoptions "-march=native -Wall"
。因为MSVC不支持此参数。) - 查找全部
configuration
命令,都改成configurations
。
(有的地方加了s
有的地方没加,不加s
是错误的命令。别加多了。)
- 查找并删除全部
flags { "ExtraWarnings" }
命令。
(共两处,81行和177行。这是错误命令。) - 查找全部
vs*
,都改成vs
。
(共两处,88行和230行。因为*是特殊字符,会报错…) - 删除全部
linkoptions { "../../thirdparty/ULib/src/ulib/.libs/libulib.a" }
命令。
(两处,269行和152行。显然Windows下不可能有这个.a
静态库文件。)
1.4.3 执行premake脚本,生成解决方案
进入build/
文件夹,终端执行命令(执行脚本):
premake.bat
可以看到生成了gmake
和vs2015
两个文件。
1.5 使用Visual Studio配置和执行项目
1.5.1 使用Visual Studio打开build/vs2015/benchmark.sln
。
打开后会提示”检查解决方案操作/重定向项目”之类的,点确定就行了。
1.5.2 修改resultfilename.h
文件
Visual Studio解决方案资源器,里面有个nativejson
项目,里面有个resultfilename.h
文件。
打开此文件,注释或删除第三行的#include machine.h
。
(根本没有这个文件,没法include,会报错。删除后就好了。)
1.5.3 生成可执行文件
- Visual Studio左上角,配置选择成
vs
的x64
版本。 - 右键
jsonclibs
项目,点击生成。(bin/
文件夹下生成了静态库文件。) - 右键
nativejson
项目,点击生成。(bin/
文件夹下生成了可执行文件。)
1.5.4 运行程序
点击Visual Studio上面的"本地Windows调试器"
右侧的下拉箭头,点击"配置启动项目"
。
"通用属性-配置启动项目-单启动项目"
改成 nativejson
项目。
(不改的话,默认启动jsonclib
,那是静态库文件,没法启动……)
确认后,就可以直接点击"本地Windows调试器"
启动程序了。
程序运行后,会在result
文件夹中生成结果数据。
1.6 将csv数据转换成html图表
1.6.1 安装minGW
转换需要使用GNU make
命令,windows下使用的是mingw
的mingw32-make
命令。
学习过C++的肯定都装过mingw
,这里就不赘述了,不会装的自己查。
(mingw32-make.exe
和g++.exe
在同个文件夹中,以前配置过的就不用动了。)
1.6.2 安装PHP语言
从csv
表格到html
的转换,是通过php
实现的,因此还要安装PHP程序。
PHP是世界上最好的语言( )
安装过程省略,需要设置环境变量,保证终端能直接运行php
指令。
1.6.3 生成html图表
进入result/
文件夹,在终端输入命令:
mingw32-make
GNU Make
会自动读取makefile
,调用php
,生成.html
文件。
2 添加自己的json解析库,并测试和生成图表
别添加了,太痛苦了。 想要测试自己的JSON库解析效率,推荐使用cpp-json-test