Bir döngü hızı karşılaştırmasında iki farklı döngü veya iki koşul
Şu anda iki döngüm var ve bunun içinde bazı görevler var, ancak bunu en hızlı şekilde yapmam gerekiyor.
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.
}
Daha iyi sonuç almaya çalıştığımda, bunu bir aşağıda yapabileceğimi düşündüm ama sonuç daha kötü görünüyor
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.
}
Yanlış olan ne ? Nasıl hızlandırabilirim bir fikriniz var mı? (En önemli şey hızdır, hafızayı düşünme).
ps. Bazı güvenlik sorunları nedeniyle kodu değiştirdim, sözdizimi hatalarını umursamıyorum ve elementsOne.count = elementsTwo.count neredeyse her zaman aynı. Döngüde sadece 5 öğe olduğunu düşünmeyin, dışarıda başka bir döngü var, onun sürekli döngüsü. İngilizcem için üzgünüm
Yanıtlar
Performans için, if
döngülerinizde ifadelerden kesinlikle kaçınmalısınız . if
Dallanmaya neden olan bir neden, CPU dal tahmincisinin elinde olduğunuz anlamına gelir.
Yani evet, çok olacak olasılıkla bir olmadan yaklaşık 20 döngüler varsa daha yüksek bir performans if
vakaların 5 gibi% olarak geçerli olacak açıklamada. Deneyin ve yardımcı olup olmadığına bakın. Ayrıca, Count()
ek bir döngü anlamına gelebileceği için değerini önbelleğe aldığınızdan emin olun .