Aynı eyleme neden olan koşullarda birçok "veya" (||)'dan kaçmak mümkün müdür? - sayfa 2

 
TarasBY :

Hesaplamaları şu şekilde de optimize edebilirsiniz:

Teşekkür ederim! Bana zaten bool Avals kullanmam önerildi ve Vinin bunun ciddi şekilde yavaşlayacağı konusunda uyardı. Ve sonuçta, neredeyse tamamlanmış bir Uzman Danışmandan sonra, kodda optimize etmek için başka bir şey arıyorum. 12 ayda tüm keneler üzerinde test cihazında bir çalışma elde ettim, 40 dakikadan 13'e düşürüldü!
 

Kaç kez söylendi: MCL'de kısaltılmış kontrol yok, if(a||b||c||d||e){} durumunda tüm koşullar kontrol edilecek.

çıktı - koşulların yuvalanması:

if(a){if(b){if(c){}}} bu durumda, kontrol ilk eşleşme koşulundan çıkar

ancak yuvalama da sonsuz değildir, en esnek çözüm, çıkış ile bir döngüdeki koşulları kontrol etmektir:

 bool cond[]={a,b,c,d,e,...};
int sz = ArraySize (cond);
for ( int i= 0 ;i<sz;i++){
   if (cond[i]){
      bla.bla.bla;
       break ;
   }
}
 
Vinin : Yapabilirsin, sadece işin hızı çok düşer
Viktor, uyarıların (bir bool değişkeni kullanmayla ilgili) optimizasyon seçeneklerim için geçerli mi?!
 
FAQ :

Kaç kez söylendi: MCL'de kısaltılmış kontrol yok, if(a||b||c||d||e){} durumunda tüm koşullar kontrol edilecek.

çıktı - koşulların yuvalanması:

if(a){if(b){if(c){}}} bu durumda, kontrol ilk eşleşme koşulundan çıkar

ancak yuvalama da sonsuz değildir, en esnek çözüm, çıkış ile bir döngüdeki koşulları kontrol etmektir:

Çok teşekkürler! Yapmaya çalışacağım! İspanyolca biliyor musun? Ne de olsa "bla, bla, bla", "konuşmak" (hablar) fiilinden gelir!
 
Hayır, ama Albany'yi iyi tanırım :))
 
FAQ :
Hayır, ama Albany'yi iyi tanırım :))

Yuvalama koşulları if(a){if(b){if(c){}}} iyi değil, çünkü tüm koşullar birbirini dışlar, ancak Boole'da bir şeyler yolunda gitmez. Muhtemelen ve büyük ihtimalle yanlış bir şey yapıyorum. Şimdiye kadar, her koşul için bir çift değişken yaptığım gerçeğinde durdum ve onu aynı if ()'ye 4 "veya" ile ekledim. Beklendiği gibi, test cihazındaki penetrasyon oranını etkilemedi. 12 ay boyunca tüm kenelerde aynı 13 dakika.

Ya da belki bu dile O Blanc denir? Yardımın için de teşekkürler !

 
borilunad :

Yuvalama koşulları if(a){if(b){if(c){}}} iyi değil, çünkü tüm koşullar birbirini dışlar, ancak Boole'da bir şeyler yolunda gitmez. Muhtemelen ve büyük ihtimalle yanlış bir şey yapıyorum.


Her şey yolunda, sadece Boole aritmetiğinden bazı kimlikleri hatırlamanız gerekiyor, örneğin: a || b = !( !a && !b ). Ardından, birliktelikten ayrılmaya geçerek, "VEYA" koşulunun denetimini "VE" koşullarının sıralı (iç içe) denetimiyle değiştirme fırsatımız olur: örneğin, eğer (a || b || c) dönerse , TarasBY'nin yukarıda haklı olarak yazdığı gibi,

 bool M = true ;

if (!a) { if (!b) { if (!c) M= false ;}}

if (!M) {Action;}

Bu kod genellikle || içeren orijinal koddan daha hızlıdır, çünkü yalnızca listedeki koşullardan biri doğru olana kadar, yani tüm VEYA işlemi TRU ile sonuçlanana kadar yürütülür.

 
alsu :

Her şey yolunda, sadece Boole aritmetiğinden bazı kimlikleri hatırlamanız gerekiyor, örneğin: a || b = !( !a && !b ). Ardından, birliktelikten ayrılmaya geçerek, "VEYA" koşulunun denetimini "VE" koşullarının sıralı (iç içe) denetimiyle değiştirme fırsatımız olur: örneğin, eğer (a || b || c) dönerse , TarasBY'nin yukarıda haklı olarak yazdığı gibi,

Bu kod genellikle || içeren orijinal koddan daha hızlıdır, çünkü yalnızca listedeki koşullardan biri doğru olana kadar, yani tüm VEYA işlemi TRU ile sonuçlanana kadar yürütülür.

Ayrıca, örneğin, A koşulunun ortalama olarak C'den daha sık ve C'nin B'den daha sık karşılandığını biliyorsak, bunları şu sırayla düzenlememiz gerekir: if(!a){if(! c)eğer {(!b) M=yanlış;}}
 
alsu :

Her şey yolunda, sadece Boole aritmetiğinden bazı kimlikleri hatırlamanız gerekiyor, örneğin: a || b = !( !a && !b ). Ardından, birliktelikten ayrılmaya geçerek, "VEYA" koşulunun denetimini "VE" koşullarının sıralı (iç içe) denetimiyle değiştirme fırsatımız olur: örneğin, eğer (a || b || c) dönerse , TarasBY'nin yukarıda haklı olarak yazdığı gibi,

Bu kod genellikle || içeren orijinal koddan daha hızlıdır, çünkü yalnızca listedeki koşullardan biri doğru olana kadar, yani tüm VEYA işlemi TRU ile sonuçlanana kadar yürütülür.

Katıldığınız için teşekkürler! 5 farklı ama eşit koşulum var ve hiçbiri karşılanmazsa, EA bunlardan biri karşılanana kadar bekler. Bu nedenle, çabalarıma rağmen, hiçbir uygulama şekli daha iyi sonuç vermedi. Bu nedenle, "turtalarımla" kalırken.
 
borilunad :
Katıldığınız için teşekkürler! 5 farklı ama eşit koşulum var ve hiçbiri karşılanmazsa, EA bunlardan biri karşılanana kadar bekler. Bu nedenle, çabalarıma rağmen, hiçbir uygulama şekli daha iyi sonuç vermedi. Bu nedenle, "turtalar" ile kalırken.
Az önce gösterdiğim şey bile mi? Peki, o zaman performans başka bir şey pahasına geliştirilmelidir.