%python -m timeit -s "import copy" "x = (1, 2, 3)" "copy.deepcopy(x)"
100000 loops, best of 3: 10.1 usec per loop
%python -m timeit -s "import copy" "x = (1, 2, 3)" "copy.copy(x)"
1000000 loops, best of 3: 0.609 usec per loop
पर copy.deepcopy प्रदर्शन क्यों deepcopy
15 बार copy
की तुलना में धीमी है?copy.copy बनाम tuples
प्रत्येक कार्य को ट्यूपल के तत्वों के माध्यम से पुन: सक्रिय करना होता है। उस पुनरावृत्ति के दौरान, copy
प्रत्येक तत्व के लिए एक और संदर्भ बनाता है; deepcopy
प्रत्येक तत्व को गहराई से।
लेकिन प्रत्येक तत्व int
है, और int
को गहराई से बस इसके लिए एक और संदर्भ बनाता है। दूसरे शब्दों में, दो कार्य ठीक उसी चरण, समान संख्या में प्रदर्शन करने लगते हैं।
यहाँ सत्यापन कि कोई नया उदाहरणों प्रक्रिया में बनाए जाते हैं है:
ActivePython 3.2.1.2 (ActiveState Software Inc.) based on
Python 3.2.1 (default, Jul 18 2011, 14:31:09) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x = (1,2,3)
>>> import copy
>>> y = copy.copy(x)
>>> z = copy.deepcopy(x)
>>> x is y
True
>>> x is z
True
>>> x[1] is z[1]
True
नहीं एक असली जवाब है, लेकिन एक संदेह: 'deepcopy' ट्रैक जो तत्व यह पहले से ही चक्रीय संदर्भ, कुछ भूमि के ऊपर जोड़ सकते हैं, जो विशेष रूप से इस तरह के साधारण मामलों में के लिए अनुमति देने के लिए नकल की है रखने की जरूरत है। – Philipp
यदि आप अपनी "गहरी प्रतिलिपि" की प्रतिलिपि बना सकते हैं तो यह इसके लायक हो सकता है। मैं कुछ विकासवादी एल्गोरिदम कोड का प्रोफाइल कर रहा था और यह गहरे रंग में बहुत समय बिता रहा था। मैं एल्गोरिदम के लिए आवश्यक बाधाओं को निर्धारित करने में सक्षम था और गहरे रंग के अपने सीमित संस्करण को लिखने में सक्षम था जो काफी गति-गति का कारण बनता है। आपकी माइलेज भिन्न हो सकती है। – Levon