眾所周知,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
提交
取消