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

 
alsu :
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ış;}}

Bir koşulun yerine getirilme olasılığını hesaplama karmaşıklığıyla birleştirerek daha da hızlandırabilirsiniz: örneğin, yürütme olasılığının çarpımını hesaplama süresinin tersi ile ölçüt olarak alarak, önce şu koşulları kontrol etmelisiniz. büyük olasılıkla ve en az hesaplama karmaşıklığına sahip, yani belirlediğimiz kriterin en yüksek değerine sahip olanlar.
 
TarasBY :

Hesaplamaları şu şekilde de optimize edebilirsiniz:

Ya da belki şunu deneyin:

     bool M = false ;

     if (A) M = true ; else if (B) M = true ; else if (C) M = true ; else if (D) M = true ; else if (E) M = true ;
     if (M == true ) Action;

Teşekkür ederim!

 
alsu :

Bir koşulun yerine getirilme olasılığını hesaplama karmaşıklığıyla birleştirerek daha da hızlandırabilirsiniz: örneğin, yürütme olasılığının çarpımını hesaplama süresinin tersi ile ölçüt olarak alarak, önce şu koşulları kontrol etmelisiniz. büyük olasılıkla ve en az hesaplama karmaşıklığına sahip, yani belirlediğimiz kriterin en yüksek değerine sahip olanlar.

Onları uzun zamandır bu sırayla düzenledim. Ancak birden fazla şart birdenbire gerçekleşse bile, ilk ortaya çıkan şey gerçekleşmiş olacaktır.

Ve önemli değil çünkü. daha sonra tüm varyantlar için ortak olan nihai koşullar reçete edilir.

 
alsu :

Bir koşulun yerine getirilme olasılığını hesaplama karmaşıklığıyla birleştirerek daha da hızlandırabilirsiniz: örneğin, yürütme olasılığının çarpımını hesaplama süresinin tersi ile ölçüt olarak alarak, önce şu koşulları kontrol etmelisiniz. büyük olasılıkla ve en az hesaplama karmaşıklığına sahip, yani belirlediğimiz kriterin en yüksek değerine sahip olanlar.
Alexey, eylemlerin gerçekleştirilme hızı üzerindeki etkilerine bağlı olarak koşulları değiştirme teklifinize bir kez daha cevap veriyorum. Ve işte bulduğum şey! En karmaşık hesaplamalar, piyasanın çeşitli gerekli verilerini ve her tikte açık pozisyonları kontrol eden fonksiyonlar kadar yavaşlamaz. Forum üyelerinden birinin tavsiyesi üzerine bu işlevleri zaten yeterince basitleştirdim, benim durumumda gereksiz tüm şeyleri attı, bu da eylemlerini neredeyse ikiye katladı. "Her" kene üzerinde çalışma seçimine gelince, daha önce sadece bu modun gerçekten olası sonuçlara daha fazla yaklaşıklık verdiğine ikna olmuştum. Böylece, bu işlevleri tüm hesaplamalardan, kontrol göstergelerinden ve mevcut fiyattan sonra koyarak, hız iki katına çıktı, bu da şimdi test cihazında yarım yıl boyunca 7 dakika ve buna bağlı olarak yılda 14 dakika. Önceki koşullar izin veriyorsa gerekli kontrolleri yapan işlevleri reddedemem. Şimdi kodu && olarak değiştirerek optimize etmeye çalışacağım ) if (.Kod optimizasyonunda başka ne gibi olasılıklar olduğunu bilmekten memnuniyet duyacağım.Yardımlarınız için herkese ve herkese teşekkürler!
 
borilunad :

Operatörlerin hiçbiri uygun değil. Belki if(A || B || C || D || E) Action; olmadan başka bir yol vardır.

Aklıma takılan ve daha mantıklı bir çözüm bulamadığım konunun öneminden dolayı moderatörlerin genel konuya soru göndermemelerini rica ediyorum! Teşekkür ederim!


if(A || B || C || D || E) Eylem; Bunu yapardım if((A + B + C + D + E) > 0) Action; Eylemin en az 3 sinyale ihtiyacı varsa 0 yerine 2 yazın

hız ölçmedim

 
pako :


if(A || B || C || D || E) Eylem; Bunu yapardım if((A + B + C + D + E) > 0) Action; Eylemin en az 3 sinyale ihtiyacı varsa 0 yerine 2 yazın

hız ölçmedim


Hızlanma muazzam olacak. Çözüm çok orijinal.
 
A, B, C, D fonksiyonlar ise, o zaman en kolaydan başlayarak karmaşıklığı saymanız ve sürekli olarak gerçeği kontrol etmeniz gerekir. Bu daha hızlı çalışacaktır.
 
Vinin :

Hızlanma muazzam olacak. Çözüm çok orijinal.
Yeni girdim! Teşekkürler Pako! Teşekkürler Victor! Şimdi yemek yiyip deneyeceğim!
 
FION :
A, B, C, D fonksiyonlar ise, o zaman en kolaydan başlayarak karmaşıklığı saymanız ve sürekli olarak gerçeği kontrol etmeniz gerekir. Bu daha hızlı çalışacaktır.

Katıldığınız için teşekkürler! A, B, C ... işlevler değil, işlevleri içeren ve içermeyen koşullar ve ayrıca birbirini dışlayan koşullar! Ve zaten bir eylemi tetikleyen diğer koşullara geçmek için bir koşul yeterlidir. Yalnızca işlevler olsaydı, sorun olmazdı:

çift A = function1() ; çift B = işlev2(); çift C = function3(); çift D = function4(); çift E = fonksiyon5(); ve ayrıca Pako tarafından önerildiği gibi:

if((A + B + C + D + E) > 0)

{Byevs veya Sells'i kapatmak için ayna benzeri yönü olan diğer koşul} Eylem; ANCAK:

Ve A = koşul1, B = koşul2, C = koşul3, D = koşul4, E = koşul5'e ihtiyacım var. Mümkün mü değil mi? Yoksa imkansız mı ve hepsi bu!

Örneğin:

 bool a = true ;

//или
double a;

а = (isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo);

Ne deneyeceğimi bilmiyorum!

 
borilunad :

Ve A = koşul1, B = koşul2, C = koşul3, D = koşul4, E = koşul5'e ihtiyacım var. Mümkün mü değil mi?! Yoksa imkansız mı ve hepsi bu!

 bool a = true ;

//или
double a;

а = (isCloseLastPosByTake() == True && Profit > ProClo / clo - GetProfitCloseLastPosByTake() * clo); <---   10,444 = 8,087 > 3,908 эт на каком языке?  

bool a = false;

if (isCloseLastPosByTake() == True && Profit > ProClo / (clo - GetProfitCloseLastPosByTake() * clo)) a = true;