दो अलग लूप या लूप स्पीड तुलना में दो शर्त
मेरे पास अभी दो लूप हैं और इसके अंदर कुछ असाइनमेंट हैं, लेकिन मुझे इसे सबसे तेज तरीके से बनाना है।
for (var i = 0; i < Math.Min(data.elementsOne.Count(), 5)) ; i++) {
if (data.PairSymbol == "xxx") { oldxxxA = xxxAa; xxxAa = data.elementsOne[0].Amount; oldxxxB = xxxBb; xxxBb = data.elementsTwo[0].Amount; }
//I HAVE 20 IF BLOCK INSIDE OF IT.
}
for (var i = 0; i < (Math.Min(data.elementsOne.Count(), 5)) || i < Math.Min(data.elementsTwo.Count(), 5); i++)
{
if (data.PairSymbol == "xxx") { oldxxxA = xxxAa; xxxAa = data.elementsOne[0].Amount; oldxxxB = xxxBb; xxxBb = data.elementsTwo[0].Amount; }
//I HAVE 20 IF BLOCK INSIDE OF IT.
}
जब मैं बेहतर परिणाम प्राप्त करने की कोशिश कर रहा हूं, तो मुझे लगा कि मैं इसे नीचे की तरह कर सकता हूं, लेकिन परिणाम बदतर दिखेंगे।
for (var i = 0; i < (Math.Min(data.elementsOne.Count(), 5)) || i < Math.Min(data.elementsTwo.Count(), 5); i++)
{
if (data.PairSymbol == "xxx") { oldxxxA = xxxAa; xxxAa = data.elementsOne[0].Amount; oldxxxB = xxxBb; xxxBb = data.elementsTwo[0].Amount; }
//I HAVE 20 IF BLOCK INSIDE OF IT.
}
गलत क्या है ? किसी भी विचार मैं कैसे गति कर सकते हैं? (सबसे महत्वपूर्ण बात गति है, न ही स्मृति सोचो)।
पी एस। मैंने कुछ सुरक्षा समस्याओं के कारण कोड को बदल दिया है, सिंटैक्स त्रुटियों को ध्यान में नहीं रखा है, और तत्वOne.count = elementsTwo.count लगभग सभी समय समान हैं। मत सोचो कि लूप में केवल 5 आइटम हैं, बाहर एक और लूप है, इसकी निरंतर लूप है। मेरी अंग्रेजी के लिए खेद है
जवाब
प्रदर्शन के लिए, आपको निश्चित रूप से if
अपने छोरों में बयान देने से बचना चाहिए । if
ब्रांचिंग का एक कारण है जिसका अर्थ है कि आप सीपीयू शाखा के भविष्यवक्ता के हाथों में हैं।
तो हाँ, तुम बहुत होगा की संभावना बेहतर प्रदर्शन देख अगर आप एक के बिना कुछ 20 छोरों है if
बयान है कि% मामलों में 5 की तरह सच हो जाएगा। कोशिश करो और देखो कि यह मदद करता है। इसके अलावा, Count()
एक अतिरिक्त लूप लगाने के रूप में मूल्य को कैश करना सुनिश्चित करें ।