कभी-कभी एक लूप जहां सीपीयू अधिकतर समय बिताता है, वहां कुछ शाखा भविष्यवाणी मिस (गलत भविष्यवाणी) होती है (लगभग 5 संभावना।) मैंने बहुत अलग थ्रेड पर कुछ तकनीकें देखी हैं लेकिन कभी भी एक सूची नहीं है। जिन लोगों को मैं जानता हूं वे पहले से ही उन स्थितियों को ठीक करते हैं जहां स्थिति को एक बूल में बदल दिया जा सकता है और 0/1 को बदलने के लिए किसी भी तरीके से उपयोग किया जाता है। क्या अन्य सशर्त शाखाएं हैं जिन्हें टाला जा सकता है?सशर्त शाखाओं से बचने के लिए कौन सी तकनीकें आपको पता हैं?
उदा। (स्यूडोकोड)
loop() {
if (in[i] < C)
out[o++] = in[i++]
...
}
इस तरह, फिर से लिखा जा सकता है यकीनन कुछ पठनीयता को खोने, कुछ के साथ:
loop() {
out[o] = in[i] // copy anyway, just don't increment
inc = in[i] < C // increment counters? (0 or 1)
o += inc
i += inc
}
इसके अलावा, मैं जंगली कुछ संदर्भों में सशर्त में &
करने के लिए &&
बदलने में तकनीक को देखा है अभी मेरे दिमाग से बच रहा है। मैं अनुकूलन के इस स्तर पर एक रूकी हूं लेकिन यह सुनिश्चित करता है कि और अधिक होना है।
बुरा उदाहरण। यहां तक कि अगर शाखा रहित कोड मूल के बराबर के रूप में देखा जा सकता है, तो केवल तभी होगा जब मूल कोड पहले स्थान पर कोई समझ नहीं लेता है। – AnT
इतने सारे लोग ऐसे उत्तर के साथ क्यों प्रतिक्रिया देते हैं जो वास्तव में प्रश्न का उत्तर नहीं दे रहा है – jasonk