동일한 동작을 유발하는 조건에서 많은 "또는"(||)을 이스케이프할 수 있습니까? - 페이지 3

 
alsu :
예를 들어 조건 A가 평균적으로 C보다 더 자주 충족되고 C가 B보다 더 자주 충족된다는 것을 알고 있다면 속도를 높일 수도 있습니다. if(!a){if(! c) {(!b) M=거짓;}}인 경우

조건이 충족될 확률과 계산 복잡도를 결합하면 속도를 훨씬 높일 수 있습니다. 예를 들어, 실행 확률을 계산 시간의 역수로 곱한 값을 기준으로 삼으면 먼저 다음 조건을 확인해야 합니다. 가장 가능성이 높고 계산 복잡성이 가장 적습니다. 우리가 설정한 기준의 가장 높은 값을 갖는 것들.
 
TarasBY :

다음과 같은 방법으로 계산을 최적화할 수도 있습니다.

또는 다음을 시도하십시오.

     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;

고맙습니다!

 
alsu :

조건이 충족될 확률과 계산 복잡도를 결합하면 속도를 훨씬 높일 수 있습니다. 예를 들어, 실행 확률을 계산 시간의 역수로 곱한 값을 기준으로 삼으면 먼저 다음 조건을 확인해야 합니다. 가장 가능성이 높고 계산 복잡성이 가장 적습니다. 우리가 설정한 기준의 가장 높은 값을 갖는 것들.

나는 오랫동안 그것들을 이 순서로 배열했다. 그러나 둘 이상의 조건이 갑자기 충족되더라도 가장 먼저 마주하는 조건이 충족됩니다.

그리고 그것은 중요하지 않습니다. 그런 다음 모든 변형에 공통적인 최종 조건이 규정됩니다.

 
alsu :

조건이 충족될 확률과 계산 복잡도를 결합하면 속도를 훨씬 높일 수 있습니다. 예를 들어, 실행 확률을 계산 시간의 역수로 곱한 값을 기준으로 삼으면 먼저 다음 조건을 확인해야 합니다. 가장 가능성이 높고 계산 복잡성이 가장 적습니다. 우리가 설정한 기준의 가장 높은 값을 갖는 것들.
Alexey, 다시 한 번 작업 실행 속도에 대한 영향에 따라 조건을 바꾸라는 귀하의 제안에 답변합니다. 그리고 여기 내가 찾은 것이 있습니다! 가장 복잡한 계산은 시장의 다양한 필수 데이터를 확인하고 각 틱에서 포지션을 여는 기능만큼 느려지지 않습니다. 나는 이미 포럼 회원 중 한 사람의 조언에 따라 이러한 기능을 충분히 단순화했으며, 내 경우에는 거의 두 배의 조치를 취한 불필요한 모든 것을 버렸다. "각각" 틱에 대한 작업 선택에 관해서는, 이 모드만이 실제로 가능한 결과에 더 큰 근사치를 제공한다는 것을 더 일찍 확신했습니다. 그래서 모든 계산 후에 이 함수들을 넣어 지표와 현재 가격을 확인함으로써 속도가 2배가 되었고 이제 반년 동안 테스터에서 실행되는 7분, 따라서 1년에 14분입니다. 나는 앞의 조건이 허락한다면 필요한 검사를 수행하는 기능을 거부할 수 없습니다. 이제 && 를 ) if (. 코드 최적화 에 어떤 다른 가능성이 있는지 알게 되어 기쁩니다. 도움을 주신 모든 분들께 감사드립니다!
 
borilunad :

어떤 연산자도 적합하지 않습니다. if(A || B || C || D || E) Action;이 없는 다른 방법이 있을 수 있습니다.

문제의 중요성으로 인해 일반 스레드에 질문을 보내지 않도록 중재자에게 요청합니다. 나는 생각하고 더 합리적인 해결책을 찾을 수 없습니다! 고맙습니다!


if(A || B || C || D || E) 액션; 나는 이것을 할 것이다 if((A + B + C + D + E) > 0) Action; Action에 최소한 3개의 신호가 필요한 경우 0 대신 2를 쓰십시오.

속도, 나는 측정하지 않았다

 
pako :


if(A || B || C || D || E) 액션; 나는 이것을 할 것이다 if((A + B + C + D + E) > 0) Action; Action에 최소한 3개의 신호가 필요한 경우 0 대신 2를 쓰십시오.

속도, 나는 측정하지 않았다


가속도는 엄청날 것입니다. 솔루션은 매우 독창적입니다.
 
A, B, C, D가 함수인 경우 가장 쉬운 것부터 시작하여 복잡도를 세고 지속적으로 진실을 확인해야 합니다. 이것은 더 빨리 작동합니다.
 
Vinin :

가속도는 엄청날 것입니다. 솔루션은 매우 독창적입니다.
방금 들어갔다! 고마워요 파코! 빅터 감사합니다! 이제 먹어보고 해봐야겠어요!
 
FION :
A, B, C, D가 함수인 경우 가장 쉬운 것부터 시작하여 복잡도를 세고 지속적으로 진실을 확인해야 합니다. 이것은 더 빨리 작동합니다.

참여해 주셔서 감사합니다! A, B, C ... 함수가 아니라 함수를 포함하는 조건과 포함하지 않는 조건, 또한 상호 배타적입니다! 그리고 하나의 조건은 이미 작업을 트리거하는 다른 조건으로 이동하기에 충분합니다. 기능만 있다면 문제가 없을 것입니다.

더블 A = function1() ; 더블 B = function2(); 이중 C = function3(); 더블 D = function4(); 이중 E = function5(); 그리고 Pako가 제안한 대로:

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

{Byevs 또는 Sells를 닫기 위한 거울과 같은 방향이 있는 기타 조건} 조치; 하지만:

그리고 A = 조건 1, B = 조건 2, C = 조건 3, D = 조건 4, E = 조건 5가 필요합니다. 가능한지 아닌지?! 아니면 불가능하고 그게 다야!

예를 들어:

 bool a = true ;

//или
double a;

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

무엇을 시도해야할지 모르겠습니다!

 
borilunad :

그리고 A = 조건 1, B = 조건 2, C = 조건 3, D = 조건 4, E = 조건 5가 필요합니다. 가능한지 아닌지?! 아니면 불가능하고 그게 다야!

 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;