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?
[C / C ++在许多情况下比python更快。
在很多情况下,总是。
当然,如果您的C / C ++代码编写不正确,则可以按照您想要的速度进行编程。
[我既使用内置json库在python中进行测试,也使用外部nlohmann JSON库在C ++中进行了测试。
json
JSON库比其他方法慢。它绝对有可能比CPython的实现慢。如果您really需要速度,请使用其他库。
话虽如此,请注意基准测试很难。就像@Jesper和@idclev提到的那样,在编译C ++代码时,可能只是缺少优化而已。
json库是否有可能以任何低级语言编写,这是性能的主要原因,还是仅仅是纯python?
是,@ jonrsharpe指出,CPython实现是nlohmann
。
写得不好的图书馆,无论用什么语言编写,都可以使您的学习速度更快。
[C ++中有一些专门且经过高度优化的JSON解析器,包括rapidjson和simdjson,请参阅以下最新比较: