Python反序列化json的速度比C ++快。为什么? Python 3中的json库是用C / C ++或其他低级语言编写的吗?

问题描述 投票:0回答:2

C / C ++在许多情况下比python更快。我朝这个方向进行了测试。

我有一个2200行的大型(美化)JSON文件。测试包括读取文件,反序列化内存中的数据(我使用字典作为数据结构)并显示内容。

[我既使用内置json库在python中进行测试,又使用外部json JSON库在C ++中进行了测试。

经过几次运行,我震惊地发现C ++花费0.01秒,Python 3花费0.001秒,这快将近十倍!

我在文档中进行了搜索,但没有找到有关编写nlohmann库所用内容的信息。

C ++:

json

和Python:

#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 json from time import time t1 = time() with open('output.json','r+') as f: f = json.load(f) print(f) t2 = time() elapsed = t2 - t1 print('elapsed time: '+str(elapsed)) Python库是否有可能以任何低级语言编写,这是性能的主要原因,还是仅仅是Python?

python c++ json
2个回答
1
投票

[C / C ++在许多情况下比python更快。

在很多情况下,总是

当然,如果您的C / C ++代码编写不正确,则可以按照您想要的速度进行编程。

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

json JSON库比其他方法慢。它绝对有可能比CPython的实现慢。如果您really需要速度,请使用其他库。

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

json库是否有可能以任何低级语言编写,这是性能的主要原因,还是仅仅是纯python?

是,@ jonrsharpe指出,CPython实现是nlohmann


0
投票

写得不好的图书馆,无论用什么语言编写,都可以使您的学习速度更快。

[C ++中有一些专门且经过高度优化的JSON解析器,包括rapidjson和simdjson,请参阅以下最新比较:

written in C

© www.soinside.com 2019 - 2024. All rights reserved.