ऑप्टिमाइज़ेशन और शाखा भविष्यवाणियों के दृष्टिकोण से, क्या उन दो कोडों के बीच कोई अंतर है?शाखा के साथ एक फ़ंक्शन शुरू करना
पहले:
void think_and_do(){
if(expression){
//Set_A of instructions
}
else{
//Set_B of instructions
}
}
int main(){
think_and_do();
}
दूसरा:
void do_A(){
//Set_A of instructions
}
void do_B(){
//Set_B of instructions
}
int main(){
if(expression){
do_A();
}
else{
do_B();
}
}
मुझे लगता है कि आपको एक ही कोड मिल जाएगा लेकिन यह संकलक पर अनुकूलन सेटिंग्स पर निर्भर करता है। आप दोनों संकलित कर सकते हैं और असेंबली की जांच कर सकते हैं। – NathanOliver
यह एक सवाल है जो अनुभवी उत्तर दिया गया है। कुछ दोहराने योग्य छद्म-यादृच्छिक डेटा पर कुछ मिलियन बार फिर से शुरू करें, और [इसे मापें] (http://stackoverflow.com/questions/11437523/can-i-measure-branch- भविष्यवाणी- विफलताओं-on-a- आधुनिक-intel कोर-cpu? RQ = 1)। – dlatikay
एक कुंजी दोनों कार्यों के लिए आवश्यक पैरामीटर की संख्या हो सकती है। सबसे पहले फंक्शन 'think_and_do()' को सभी पैरामीटर और दूसरे मामले के लिए आवश्यक था, केवल 'd__() 'या' do_B()' को सभी मानकों की आवश्यकता होती है (आमतौर पर जब 'do_A()' कोई ऑब्जेक्ट बनाता है और 'do_B() 'इस वस्तु को हटा देता है)। –