स्केल क्यों नहीं करती है मैं यादृच्छिक संख्याओं के एक साथ गुणा करने में पाइथन सूची समझ के विरुद्ध numpy बनाम सापेक्ष दक्षता की तुलना कर रहा हूं। (पायथन 3.4/स्पाइडर, विंडोज और उबंटू)।numpy की क्षमता
जैसा कि कोई अपेक्षा करता है, सबसे छोटे सरणी के लिए, numpy तेजी से एक सूची समझ को बेहतर बनाता है, और सरणी की लंबाई बढ़ाने के लिए आपको प्रदर्शन के लिए अपेक्षित सिग्मोइड वक्र मिलता है। लेकिन सिग्मोइड चिकनी से बहुत दूर है, जिसे मैं समझने में परेशान हूं।
जाहिर है कि छोटी सरणी लंबाई के लिए मात्रात्मक शोर की एक निश्चित राशि है, लेकिन मुझे अनपेक्षित रूप से शोर परिणाम मिल रहे हैं, खासकर विंडोज के तहत। आंकड़े विभिन्न सरणी लंबाई के 100 रनों का मतलब हैं, इसलिए किसी भी क्षणिक प्रभाव को सुलझाना चाहिए (इसलिए मैंने सोचा होगा)।
Numpy and Python list performance comparison
नीचे आंकड़े सूची समझ के खिलाफ numpy का उपयोग कर लंबाई भिन्न सरणियों गुणा के अनुपात दिखा।
Array Length Windows Ubuntu
1 0.2 0.4
2 2.0 0.6
5 1.0 0.5
10 3.0 1.0
20 0.3 0.8
50 3.5 1.9
100 3.5 1.9
200 10.0 3.0
500 4.6 6.0
1,000 13.6 6.9
2,000 9.2 8.2
5,000 14.6 10.4
10,000 12.1 11.1
20,000 12.9 11.6
50,000 13.4 11.4
100,000 13.4 12.0
200,000 12.8 12.4
500,000 13.0 12.3
1,000,000 13.3 12.4
2,000,000 13.6 12.0
5,000,000 13.6 11.9
तो मुझे लगता है कि मेरे सवाल किसी को भी समझा सकता है यही वजह है कि परिणाम, विशेष रूप से Windows के तहत इतना शोर कर रहे हैं। मैंने कई बार परीक्षण चलाए हैं लेकिन परिणाम हमेशा एक जैसा दिखते हैं।
अद्यतन। रेब्लोकॉन मास्क के सुझाव पर मैंने हथियार संग्रह को अक्षम कर दिया है। जो कुछ हद तक विंडोज प्रदर्शन को सुचारू बनाता है, लेकिन वक्र अभी भी गड़बड़ कर रहे हैं।
Numpy and Python list performance comparison
(Updated to remove garbage collection)
Array Length Windows Ubuntu
1 0.1 0.3
2 0.6 0.4
5 0.3 0.4
10 0.5 0.5
20 0.6 0.5
50 0.8 0.7
100 1.6 1.1
200 1.3 1.7
500 3.7 3.2
1,000 3.9 4.8
2,000 6.5 6.6
5,000 11.5 9.2
10,000 10.8 10.7
20,000 12.1 11.4
50,000 13.3 12.4
100,000 13.5 12.6
200,000 12.8 12.6
500,000 12.9 12.3
1,000,000 13.3 12.3
2,000,000 13.6 12.0
5,000,000 13.6 11.8
अद्यतन
@ सिड के सुझाव पर, मैं इसे प्रत्येक मशीन पर एक सिंगल कोर पर चल रहा है के लिए प्रतिबंधित कर दिया है। वक्र थोड़ा चिकना (विशेष रूप से लिनक्स एक) हैं, लेकिन अभी भी इन्फ्लिक्शन और कुछ शोर के साथ, खासकर विंडोज के तहत।
(यह वास्तव में inflexions है कि मैं मूल रूप से, के बारे में पोस्ट करने के लिए के रूप में वे एक ही स्थानों में लगातार दिखाई जा रहा था था।)
Numpy and Python list performance comparison
(Garbage collection disabled and running on 1 CPU)
Array Length Windows Ubuntu
1 0.3 0.3
2 0.0 0.4
5 0.5 0.4
10 0.6 0.5
20 0.3 0.5
50 0.9 0.7
100 1.0 1.1
200 2.8 1.7
500 3.7 3.3
1,000 3.3 4.7
2,000 6.5 6.7
5,000 11.0 9.6
10,000 11.0 11.1
20,000 12.7 11.8
50,000 12.9 12.8
100,000 14.3 13.0
200,000 12.6 13.1
500,000 12.6 12.6
1,000,000 13.0 12.6
2,000,000 13.4 12.4
5,000,000 13.6 12.2
कचरा संग्रह? हो सकता है कि आप इसे अपने परीक्षण चलाने के लिए अक्षम कर सकें? –
यहां: http://stackoverflow.com/questions/20495946/why-disable-the-garbage-collector –
@ReblochonMasque इसके लिए धन्यवाद। इसने वक्र की चिकनीता में काफी सुधार किया है, हालांकि अभी भी शोर की एक निश्चित राशि है। मैं अभी भी एन के उच्च मूल्यों के लिए भी वक्र में घुसपैठ कर रहा हूं, जो मुझे लगता है कि सिर्फ शोर है ... – TimGJ