众所周知,C/C++在很多情况下都比蟒蛇快。我朝这个方向做了一个测试。我有一个包含2200行的大型(美化)JSON文件。测试包括读取文件,反序列化内存中的数据(我使用字典作为数据结构)和显示内容。我使用内置的 json 库在 python 中执行了测试,C++使用外部 nlohmann JSON 库执行了测试。运行几次后,我震惊地发现,C++需要0.01秒,Python 3大约需要0.001秒,这几乎是10倍!我在文档中搜索了一下,但没有找到有关编写库时使用的内容的信息。jsonC++:#include <iostream>#include <string.h>#include <boost/property_tree/json_parser.hpp>#include <boost/property_tree/ptree.hpp>#include "nlohmann/json.hpp"using namespace std;using json = nlohmann::json;namespace pt = boost::property_tree;#include <ctime>int main(){ ifstream input; input.open("input.json"); json json_data; input >> json_data; cout << json_data << endl; return 0;}和蟒蛇:import jsonfrom time import timet1 = time()with open('output.json','r+') as f: f = json.load(f) print(f)t2 = time()elapsed = t2 - t1print('elapsed time: '+str(elapsed))最后一个问题,Python库是用任何低级语言编写的,这是性能的主要原因,还是只是纯粹的Python?json
2 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
一个写得很差的图书馆,不管它写成什么语言,都可以给你带来巨大的速度。
C++中有一些专门的和高度优化的JSON解析器,包括快速json和simdjson,请参阅最近的比较:
30秒到达战场
TA贡献1828条经验 获得超6个赞
众所周知,C/C++在很多情况下都比蟒蛇快。
在很多情况下,并非总是如此。
当然,如果你的C/C++代码写得很糟糕,它可以像你想要的那样慢。
我使用内置的json库在python中执行了测试,C++使用外部的nlohmann JSON库进行了测试。
JSON 库比其他替代方法慢。它绝对有可能比CPython的实现慢。如果您需要速度,请使用另一个库。nlohmann
话虽如此,请注意,基准测试很难。@Jesper和@idclev提到的情况可能是,在编译C++代码时,您只是缺少优化。
json库是用任何低级语言编写的,这是性能的主要原因,还是只是纯粹的python?
是的,正如@jonrsharpe指出的那样,CPython实现是用C编写的。
添加回答
举报
0/150
提交
取消