मैं अपने प्रश्न के साथ जितना स्पष्ट हो सकता हूं उतना स्पष्ट होने की कोशिश करूंगा (आसान नहीं ... यह मेरे लिए भी स्पष्ट नहीं है)। मान लीजिए आप यदि का एक सेट ... और फिर अनेक ऑपरेंड के साथ निर्देश है, उदाहरण के लिएगणितीय कार्यों की तुलना में सशर्त निर्देशों की निष्पादन गति
IF ((a==0) && (b==1) && (c==1)) THEN x=1
ELSE IF ((a==0) && (b==0) && (c==1)) THEN x=2-
और इतने पर
मान लीजिए मैं एक ही गणितीय समारोह x = a * n1 + b * n2 + c * n3
तरह से उन सभी आईएफएस की जगह सकता है (इस सिर्फ आपको एक विचार देने के लिए है, वास्तव में यह अधिक जटिल है, लेकिन आईएफ और ऑपरेंड भी बहुत अधिक हैं)
फ़ंक्शन पहले प्रशिक्षित कृत्रिम तंत्रिका नेटवर्क से आता है।
मेरा आंत महसूस यह है कि जब निष्पादन की बात आती है, तो समारोह को आईएफ की तुलना में बहुत कम समय लेना चाहिए, लेकिन यह सिर्फ एक आंत महसूस है जो असेंबली में मेरी पुरानी पृष्ठभूमि से आता है जहां उन्होंने हमें सिखाया कि एक सशर्त निर्देश एक अंकगणितीय से अधिक समय।
क्या आप इसकी पुष्टि कर सकते हैं? शायद मुझे कुछ लिंक भी प्रदान करें जहां मुझे स्पष्टीकरण मिल सके?
अग्रिम लोगों में आपका धन्यवाद!
मुझे लगता है कि अपने आंत महसूस सही है:
यह कुछ अच्छी व्याख्या है लगता है। मैंने शाखाओं को खत्म करने से आश्चर्यजनक परिणामों के बारे में SO पर कुछ अनुकूलन प्रश्नों का पालन किया है। –
https://en.wikipedia.org/wiki/Branch_predictor और जिन लेखों से यह लिंक है, वे एक शुरुआत प्रदान करेंगे। रिश्तेदार लाभ कार्य की जटिलता और बनाम संभावित शाखाओं पर निर्भर करते हैं, लेकिन आधुनिक प्रोसेसर, पाइपलाइनिंग और शाखा भविष्यवाणियों के साथ अक्सर प्रासंगिक होते हैं। – Peter
शायद आपको पहले यह जांचना चाहिए कि आपका कंपाइलर [पहले से ही ऐसा नहीं कर सकता] (http://stackoverflow.com/questions/26124620/why-does-msvc-emit-a-useless-movsx-before-performing- यह-bit -टेस्ट) इससे पहले कि आप अपने कार्यक्रम को फेंक दें। और निश्चित रूप से * हमेशा * पहले सत्यापित करें कि यह वास्तव में * कर सकता है * एक अंतर बना सकता है, एक प्रोफाइलर का उपयोग करें। प्रोग्रामर का तानाशाह एक बार कटौती करने के लिए तीन बार मापना है। –