python - Execution time of int(raw_input() and converting raw_input() to int manually -
यह मेरा कोड है
आयात करें datetime n = raw_input () प्रिंट "aaa" a = Datetime.datetime.now () के लिए मैं एक्सरेन्ज (1,100000) में: x = 0 के लिए i में n: x = ord (i) -48 + 10 * xb = datetime.datetime.now () प्रिंट एक्स, बीए N = raw_input () प्रिंट "aaa" a = datetime.datetime.now () एक्सरेन्ज (1,100000) में: x = int (n) b = datetime.datetime.now () प्रिंट एक्स, बीए मेरे सिस्टम पर मुझे दोनों इनपुट के लिए समान मूल्य 5 के लिए कई बार मिल रहा है, मुझे ये अलग-अलग मान क्यों मिल रहा है और यह भी कि ये मान एक ही क्रम में नहीं हैं, इसके साथ कुछ भी नहीं है कंप्यूटर में मेरा इनपुट टाइपिंग समय या शाखाएं
मामला 1:
5 aaa 5 0: 00: 00.112000 5 एए 5 0: 00: 00.104000 मामला 2:
5 aaa 5 0: 00: 00.108000 5 एए 5 0: 00: 00.140000 मामला 3:
5 aaa 5 0: 00: 00.114000 5 एए 5 0: 00: 00.107000 मामला 4:
5 aaa 5 0: 00: 00.110000 5 एए 5 0: 00: 00.1 24000
आप समय निष्पादन अंतर के लिए गलत दृष्टिकोण का उपयोग कर रहे हैं। < पी> इसके बजाय का प्रयोग करें; यह आपके सिस्टम के लिए सबसे इष्टतम घड़ी का उपयोग करता है, दोहराए जाने वाले परीक्षण के लिए सबसे इष्टतम लूप कार्यान्वयन और सिस्टम प्रक्रिया में उतार-चढ़ाव को कम करने के लिए कचरा कलेक्टर को अक्षम करता है।
timeit का उपयोग करना आपको मिल जाएगा एक अंक के इनपुट के लिए, आपकी विधि अधिक तेज़ होती है: & gt; & gt; & gt; आयात समय और gt; & gt; & gt; DEF मैनुअल (एन): ... x = 0 ... i में n: ... x = ord (i) -48 + 10 * x ... & gt; & gt; & gt; Def using_int (n): ... int (n) ... & gt; & gt; & gt; टाइमिट.टाइमट ('मैनुअल ("5"),' __मैन__ आयात पुस्तिका से ') 0.7053060531616211 & gt; & gt; & gt; हालांकि, एक बड़े इनपुटस्ट्रिंग का उपयोग करके इसे नीचे धीमा कर दिया जाता है। क्रॉल; मैंने इसे 1000 अंकों के साथ पहले की कोशिश की लेकिन 10 मिनट के बाद धैर्य से बाहर हो गया। यह सिर्फ 50 अंकों के साथ है: & gt; & gt; & gt; Timeit.timeit ('मैनुअल ("5" * 50)', '__मैन__ आयात पुस्तिका से') 15.68298888206482 & gt; & gt; & gt; 1.5522758960723877 int () अब मैनुअल दृष्टिकोण से धड़कता है 10 का एक कारक।
Comments
Post a Comment