Est-il possible d'éviter de nombreux "ou" (||) dans les conditions entraînant la même action ? - page 6

Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
borilunad, tout appel de fonction ajoute un freinage inutile. Par conséquent, si une vitesse maximale est requise, vous devez vous débarrasser de tous les if(), qui effectuent des opérations d'une syllabe. Il en va de même pour les boucles. La vérification des conditions dans une boucle est toujours beaucoup plus lente qu'une simple série de if() imbriqués.
Ainsi, même les conditions mutuellement exclusives sont meilleures avec l'action if(A || B || C || D) ;
Mais je ne peux pas éviter les appels de fonction, car je dois vérifier un grand nombre de données à ce moment-là, qui sont incluses dans ces conditions.
Je vais continuer mes expériences, peut-être que j'en tirerai quelque chose. Mais il n'y a aucun contrôle sur la propagation ! :)
Cependant, la ligneresult=false devrait être combinée avec la première,elle n'affectera pas la vitesse.En général, si A, B, C et D contiennent des conditions simples (avec un minimum d'arithmétique, sans appeler toutes les fonctions mathématiques et autres), alors vous n'obtiendrez pas un grand gain de performance d'une telle optimisation (à moins que cette construction ne s'exécute des dizaines de millions de fois, bien sûr).
J'ai écrit à ce sujet dans l'un des fils de discussion que tout doit être traité rationnellement. Pour une raison quelconque, il me semble que votre code est plein d'endroits plus importants dont l'optimisation donnerait vraiment un gain de performance énorme. Vous devriez commencer par l'algorithme de base. La plupart des débutants ont une vérification stupide de toutes les conditions concernant les TS ou les ordres ouverts à chaque tick. Mais dans la plupart des cas, il suffit de vérifier uniquement les conditions limites, par exemple lorsque la hausse ou la baisse atteint une certaine valeur, ou lorsqu'une nouvelle barre apparaît. Ce n'est qu'après cela que vous pouvez effectuer d'autres vérifications.
En dehors des calculs gourmands en ressources, vous devez envisager de transférer ces calculs dans une DLL. Sinon, rester assis et attendre pendant 13 minutes dans ce putain de MQL4 (alors que vous pouvez obtenir le même résultat en 2-3 minutes) semble être malheureux :)
En général, l'option la plus rapide serait celle-ci :
Cependant, la ligneresult=false devrait être combinée avec la première,elle n'affectera pas la vitesse.En général, si A, B, C et D contiennent des conditions simples (avec un minimum d'arithmétique, sans appeler toutes les fonctions mathématiques et autres), alors vous n'obtiendrez pas un grand gain de performance d'une telle optimisation (à moins que cette construction ne s'exécute des dizaines de millions de fois, bien sûr).
J'ai écrit à ce sujet dans l'un des fils de discussion que tout doit être traité rationnellement. Pour une raison quelconque, il me semble que votre code est plein d'endroits plus importants dont l'optimisation donnerait vraiment un gain de performance énorme. Vous devriez commencer par l'algorithme de base. La plupart des débutants ont une vérification stupide de toutes les conditions concernant les TS ou les ordres ouverts à chaque tick. Mais dans la plupart des cas, il suffit de vérifier uniquement les conditions limites, par exemple lorsque la hausse ou la baisse atteint une certaine valeur, ou lorsqu'une nouvelle barre apparaît. Ce n'est qu'après cela que vous pouvez effectuer d'autres vérifications.
En dehors des calculs gourmands en ressources, vous devez envisager de transférer ces calculs dans une DLL. Sinon, rester assis et attendre pendant 13 minutes dans ce putain de MQL4 (alors que vous pouvez obtenir le même résultat en 2-3 minutes) semble être malheureux :)
L'option la plus rapide a été suggérée par Paco
Pensez-vous vraiment qu'il est plus rapide de faire la somme de plusieurs valeurs à chaque fois (c'est-à-dire d'effectuer des opérations arithmétiques supplémentaires) ? Dans ma variante, la vérification est terminée dès la première correspondance, alors que dans la variante que vous avez mentionnée - seulement après avoir fait la somme de toutes les valeurs et ensuite vérifié la somme.
De plus, cette variante nécessite de calculer TOUTES les conditions à l'avance. De quel genre de vitesse parle-t-on ici ? C'est l'option la plus lente.
Si vous voulez accélérer, vous pouvez essayer les opérations par bit.
C'est-à-dire que toutes les variables doivent être de type int (false=0). Ensuite, au sens des bits, A|B|C...>0
Si vous voulez accélérer, vous pouvez essayer les opérations par bit.
C'est-à-dire que toutes les variables doivent être de type int (false=0). Ensuite, au sens des bits, A|B|C...>0
Et personne ne vérifiera la rapidité d'exécution des variantes proposées ?
Vous pouvez utiliser le script à partir d'ici
En général, l'option la plus rapide serait celle-ci :
Cependant, la ligneresult=false devrait être combinée avec la première,elle n'affectera pas la vitesse.En général, si A, B, C et D contiennent des conditions simples (avec un minimum d'arithmétique, sans appeler toutes les fonctions mathématiques et autres), alors vous n'obtiendrez pas un grand gain de performance d'une telle optimisation (à moins que cette construction ne s'exécute des dizaines de millions de fois, bien sûr).
J'ai écrit à ce sujet dans l'un des fils de discussion que tout doit être traité rationnellement. Pour une raison quelconque, il me semble que votre code est plein d'endroits plus importants dont l'optimisation donnerait vraiment un gain de performance énorme. Vous devriez commencer par l'algorithme de base. La plupart des débutants ont une vérification stupide de toutes les conditions concernant les TS ou les ordres ouverts à chaque tick. Mais dans la plupart des cas, il suffit de vérifier uniquement les conditions limites, par exemple lorsque la hausse ou la baisse atteint une certaine valeur, ou lorsqu'une nouvelle barre apparaît. Ce n'est qu'après cela que vous pouvez effectuer d'autres vérifications.
En dehors des calculs gourmands en ressources, vous devez envisager de transférer ces calculs dans une DLL. Sinon, il serait malheureux de rester assis et d'attendre pendant 13 minutes dans ce putain de MQL4 (même si nous pouvons obtenir le même résultat en 2 ou 3 minutes).
C'est encore plus rapide comme ça.
Je me souviens d'une histoire :
"Lors d'une réunion du conseil d'administration d'une entreprise, il y avait deux questions :
1. La décision de construire un synchrophasotron.
2. La décision de construire un parking à vélos pour les employés.
Sur la première question, la discussion a duré 1 minute,
le 2, le débat a duré plus de 2 heures".