मैं कंप्यूटर की वास्तुकला के बारे में निम्नलिखित प्रश्न के बारे में सोचा। मैं अजगरप्रदर्शन। सम्मिलित (...)
from bisect import bisect
index = bisect(x, a) # O(log n) (also, shouldn't it be a standard list function?)
x.insert(index, a) # O(1) + memcpy()
जो log n
लेता है, के साथ साथ, अगर मैं सही ढंग से समझते हैं, x[index:]
के लिए एक स्मृति प्रतिलिपि आपरेशन में क्या मान लीजिए। अब मैं हाल ही में पढ़ा है कि टोंटी प्रोसेसर और स्मृति तो स्मृति प्रतिलिपि काफी तेजी से रैम के द्वारा किया जा सकता है के बीच संचार में आम तौर पर है। क्या यह काम करता है?
ठीक है, मुझे लगता है कि memcpy यह नहीं कह रहा हूँ() हे है (1) - मुझे पता है यह हे (एन) है, लेकिन लगातार छोटा हो सकता है - और मुझे यकीन है कि अगर यह वास्तव में स्मृति द्वारा अनुकूलित है नहीं कर रहा हूँ। लेकिन अगर यह अनुकूलित करने के लिए अनुकूलित किया गया है, तो कहें कि आप नैतिक रूप से सोचने से 1000 गुना तेज हैं, शायद यह जानने योग्य कुछ है। –
कुछ मामलों में, वहाँ नहीं किसी भी स्थान की सूची में छोड़ दिया है, हो सकता है तो पूरी सूची के बाद नए मुक्त स्मृति केवल एक memmove/memcpy के बजाय आवंटित किया जाता है कॉपी किया गया है। –
उत्तर मान्य है, लेकिन पहला अनुच्छेद सामान्य रूप से सामान्य रूप से सत्य नहीं है। एक भाषा निर्दिष्ट कर सकती है कि कौन से संचालन कुछ परिस्थितियों में कुशल होने के लिए डिज़ाइन किए गए हैं, ताकि किसी विशेष कार्यान्वयन के स्रोत कोड को देखे बिना, आप उन परिचालनों के कुछ प्रदर्शन गुणों पर भरोसा कर सकते हैं, मानते हैं कि कार्यान्वयन अनुरूप है। – LarsH