为了账号安全,请及时绑定邮箱和手机立即绑定

为什么?Python 3 中的 json 库是用 C/C++ 还是其他低级语言编写的?

为什么?Python 3 中的 json 库是用 C/C++ 还是其他低级语言编写的?

qq_花开花谢_0 2022-09-27 10:44:11
众所周知,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,请参阅最近的比较:

https://lemire.me/blog/2020/03/31/we-released-simdjson-0-3-the-fastest-json-parser-in-the-world-is-even-better/


查看完整回答
反对 回复 2022-09-27
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

众所周知,C/C++在很多情况下都比蟒蛇快。

在很多情况下,并非总是如此。

当然,如果你的C/C++代码写得很糟糕,它可以像你想要的那样慢。

我使用内置的json库在python中执行了测试,C++使用外部的nlohmann JSON库进行了测试。

JSON 库比其他替代方法慢。它绝对有可能比CPython的实现慢。如果您需要速度,请使用另一个库。nlohmann

话虽如此,请注意,基准测试很难。@Jesper和@idclev提到的情况可能是,在编译C++代码时,您只是缺少优化。

json库是用任何低级语言编写的,这是性能的主要原因,还是只是纯粹的python?

是的,正如@jonrsharpe指出的那样,CPython实现是用C编写的


查看完整回答
反对 回复 2022-09-27
  • 2 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信