मैं एक कार्यक्रम को क्रमानुसार और बड़ी वस्तुओं deserialize करने की जरूरत है कि लागू करने कर रहा हूँ, इसलिए मैं pickle
, cPickle
और marshal
मॉड्यूल के साथ कुछ परीक्षण कर रहा था सबसे अच्छा मॉड्यूल का चयन करें। जिस तरह से मुझे कुछ बहुत रोचक मिला:मार्शल cPickle भार तेजी से तेजी से उदासीनता,
मैं dumps
और फिर loads
(प्रत्येक मॉड्यूल के लिए) का उपयोग कर रहा हूं, डिक्ट्स, टुपल्स, इनट्स, फ्लोट और तारों की सूची पर।
DUMPING a list of length 7340032
----------------------------------------------------------------------
pickle => 14.675 seconds
length of pickle serialized string: 31457430
cPickle => 2.619 seconds
length of cPickle serialized string: 31457457
marshal => 0.991 seconds
length of marshal serialized string: 117440540
LOADING a list of length: 7340032
----------------------------------------------------------------------
pickle => 13.768 seconds
(same length?) 7340032 == 7340032
cPickle => 2.038 seconds
(same length?) 7340032 == 7340032
marshal => 6.378 seconds
(same length?) 7340032 == 7340032
तो, इन परिणामों से हम देख सकते हैं कि marshal
बेंचमार्क की हिस्सा डंपिंग में बहुत तेज था:
14.8x
यह मेरा बेंचमार्क के उत्पादन में है
pickle
से 0 गुना तेज औरcPickle
से 2.6x गुना तेज।pickle
से2.2x गुना तेजी से है, लेकिन 3.1x बार
cPickle
की तुलना में धीमी:लेकिन, मेरा बड़ा आश्चर्य के लिए,
marshal
दूर लोड हो रहा है भाग मेंcPickle
की तुलना में धीमी द्वारा किया गया।मैं कारण है कि
marshal
साथ लोड हो रहा है इतनी धीमी गति से किसी भी तरह की लंबाई के साथ संबंधित है अनुमान लगा रहा हूँ:
और राम के लिए के रूप में, marshal
जबकि प्रदर्शन लोड हो रहा है भी बहुत अक्षम था इसकी धारावाहिक स्ट्रिंग (pickle
और cPickle
से अधिक)।
- क्यों
marshal
तेजी से डंप और धीमी गति से लोड हो जाता है? - क्यों
marshal
धारावाहिक स्ट्रिंग इतनी लंबी है? - क्यों
marshal
की लोडिंग रैम में इतनी अक्षम है? - क्या
marshal
के लोडिंग प्रदर्शन को बेहतर बनाने का कोई तरीका है? marshal
cPickle
तेजी से लोडिंग के साथ तेजी से डंपिंग करने का कोई तरीका है?
डाउनवॉटर, साझा करने की देखभाल? – juliomalegria
आपका प्रश्न एक मृत अंत है। 'मार्शल' मॉड्यूल का उपयोग 'अचार' के विकल्प के रूप में नहीं किया जाना है। मार्शल फ़ाइल प्रारूप के लिए कोई आधिकारिक दस्तावेज नहीं है और यह संस्करण से संस्करण में बदल सकता है, इसलिए भविष्य में आपके बेंचमार्क परिणाम गलत हो सकते हैं। –
गति मतभेदों के बारे में: मुझे संदेह है कि यह फाइल आईओ के बारे में है: मार्शल द्वारा उत्पादित फ़ाइल लगभग चार गुना बड़ी है (112 एमबी बनाम 30 एमबी)। –