2008-12-23 13 views
35

डेटा संरचना (उदाहरण के लिए हैश का हैश) देखते हुए, तत्काल उपयोग के लिए गहरी प्रतिलिपि बनाने के लिए साफ/अनुशंसित तरीका क्या है? उचित मामलों का मान लें, जहां डेटा विशेष रूप से बड़ा नहीं है, कोई जटिल चक्र मौजूद नहीं है, और पठनीयता/रखरखाव/आदि। हर कीमत पर गति से अधिक महत्वपूर्ण हैं।पर्ल में डेटा संरचना की गहरी प्रतिलिपि बनाने का सबसे अच्छा तरीका क्या है?

मुझे पता है कि मैं Storable, Clone, क्लोन :: अधिक, Clone::Fast, Data::Dumper, आदि का उपयोग कर सकते मौजूदा सबसे अच्छा अभ्यास क्या है?

+0

[टैग: गहरी प्रतिलिपि] वास्तव में अप्रासंगिक है, @JasonMArcher? सी और सी ++ के बारे में सारांश वार्ता, लेकिन उथले और गहरी प्रति भाषा-अज्ञेय अवधारणाएं हैं। एक क्लोन द्वारा, उथली प्रतिलिपि आमतौर पर (जावा, सी #, ...) का मतलब है, यह सवाल एक गहरी प्रतिलिपि मांग रहा है। – Palec

+0

हमारे टैग को minutiae में गिट करने की आवश्यकता नहीं है। ये क्लोनिंग परिचालन के सभी प्रकार हैं। वर्तमान में हमारे पास [क्लोन], [क्लोनिंग], [कॉपी], [गहरी क्लोन], [गहरी क्लोन], [गहरी] + [क्लोन], [गहरी] + [प्रतिलिपि] और [गहरी प्रतिलिपि] है। – JasonMArcher

उत्तर

17

CloneStorable::dclone से बहुत तेज है, लेकिन बाद वाले वर्शन अधिक डेटा प्रकारों का समर्थन करता है।

Clone::Fast और Clone::More काफी बराबर यदि स्मृति मुझे सही में कार्य करता है, लेकिन कम सुविधा को और भी क्लोन से पूरा, और Scalar::Util::Clone भी कम का समर्थन करता है लेकिन IIRC कुछ संरचनाओं के लिए उन सब में सबसे तेज है कर रहे हैं।

पठनीयता के संबंध में इन सभी को वही काम करना चाहिए, वे लगभग एक-दूसरे के समान हैं।

यदि आपके पास कोई विशिष्ट प्रदर्शन आवश्यकता नहीं है तो मैं केवल स्टेरियल के क्लोन का उपयोग करूंगा।

मैं इस के लिए Data::Dumper का उपयोग नहीं करता क्योंकि यह इतना बोझिल और चौराहे है। यह शायद बहुत धीमी होने जा रहा है।

यदि आप कभी भी अनुकूलन योग्य क्लोनिंग चाहते हैं, तो Data::Visitor हुकिंग क्षमताओं को प्रदान करता है और काफी सुविधा पूर्ण गहरी क्लोनिंग डिफ़ॉल्ट व्यवहार है।

+1

क्या आपके पास स्केलर :: Util :: क्लोन का लिंक है? मैं इसे सीपीएएन या मेटाकपैन पर नहीं ढूंढ सकता ... –

15

मेरी धारणा यह है कि Storable::dclone() कुछ हद तक कैननिकल है।

7

Clone शायद आप इसके लिए क्या चाहते हैं। कम से कम, यही वह कोड है जो मैंने देखा है।

संबंधित मुद्दे

 संबंधित मुद्दे