2013-05-10 7 views
6

पर खोजने के लिए उपयोग करने के लिए मुझे किसी अन्य विशेष मान से अधिक किसी सरणी में पहला मान वापस करने की आवश्यकता है। मेरे पास है:लॉजिकल इंडेक्सिंग

find(A > val, 1, 'first') 

इस पोस्ट के अनुसार: https://stackoverflow.com/a/9464886/1985603 खोज इस मामले में अपरिहार्य है। लेकिन, इसके बारे में:

B = A(A > val); 
B(1) 

क्या अतिरिक्त लाइन के अलावा अन्य पर एक का उपयोग करने का कोई अच्छा कारण है?

उत्तर

6

हां वहाँ है; गति! विशेष रूप से बड़े सरणी के लिए, find काफी तेज़ होगा।

इसके बारे में सोचो: आपरेशन A > val दोनों ही मामलों में ही है, लेकिन

B = A(A > val) 

A से अर्क मूल्यों, और उन्हें प्रतियां एक नई सरणी B, आवंटित किया जाना और उसकी प्रतिलिपि सौंपा होगा जिसमें , और A(A> val) अस्थायी को नष्ट करना होगा।

सभी find(A>val, 1, 'first') लॉजिकल की सूची चलते हैं, और एक ही नंबर लौटाते हैं जब यह पहले true मान का सामना करता है; यह बहुत कम बेकार प्रतिलिपि/असाइनिंग/आदि है, और इसलिए, बहुत तेज है।

अंगूठे के नियम के रूप में, जब आप find में अतिरिक्त विकल्पों का उपयोग नहीं करते हैं, तो तार्किक अनुक्रमण लगभग हमेशा बेहतर होता है। जब आपको find की अतिरिक्त कार्यक्षमताओं की आवश्यकता होती है या उपयोग करते हैं, तो find विकल्प लगभग हमेशा बेहतर होता है।

+0

धन्यवाद! यही वह जवाब था जिसे मैं ढूंढ रहा था :-) – mlai

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