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
Malgré cela, le code le plus élevé gagne parfois, mais très rarement, c'est-à-dire que le lien est gratuit.
) eh bien ce n'est pas comme ça que ça marche)
C'est ainsi que cela fonctionne en C++
Je pense que c'est la même chose en mql mais avec des enveloppes supplémentaires de MQ.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
FAQ des débutants MQL5 MT5 MetaTrader 5
Roman, 2019.12.11 14:02
Tu n'as pas besoin d'y réfléchir, pourquoi devrais-je... Le compilateur le fera tout seul. ))
C# n'est pas C
Regardez la vidéo sur __inline.
Il y est expliqué comment les fonctions fonctionnent en mémoire pour ceux qui ne font pas de différence.
Voici comment cela fonctionne en C++
En mql, je pense que c'est la même chose, mais avec des enveloppes supplémentaires provenant de MQ
Eh bien, maintenant relire ce fil et beaucoup de déclarations et d'exemples de test - qu'il ya une certaine différence. Et nous l'avons trouvé)))
Eh bien maintenant relire ce fil et un tas de déclarations et d'exemples de tests - qu'il ya une différence. Et ils ont fait))))
Non ! Je n'ai aucune envie de le relire.
Il est évident pour moi qu'il y a une différence.
Non ! Je n'ai aucune envie de le relire.
Il est évident pour moi qu'il y a une différence.
)))) un autre IMHO.
La voie supérieure est plus rapide de presque 15%, c'est très significatif, enfin si tout est si évident expliquez-le moi)
)))) un autre IMHO
La voie supérieure est plus rapide de presque 20%, bon puisque tout est si évident expliquez-le moi)
Les boucles comparées ne sont pas les mêmes en termes de code dans le corps.
La première boucle a un code dans le corps, le corps de la deuxième boucle a un autre code.
Des instructions de code naturellement différentes, un temps d'exécution naturellement différent.
Faites le même code dans le corps de la boucle et changez seulement la condition de boucle ArraySize et la variable size.
Nous testons cette partie, pas le corps.
Les boucles comparées ne sont pas le même code dans le corps.
La première boucle a un code dans son corps et le corps de la deuxième boucle a un autre code.
Naturellement, les instructions de code et le temps d'exécution sont différents.
Faites le même code dans le corps de la boucle et changez seulement la condition de boucle ArraySize et la variable size.
Nous testons cette partie, pas le corps.
Votre test est plus incorrect car il dépend du cas de lancement, refaites-le. Dans les deux cas, il y a un incrément et une division. En plus, il y a quelques dizaines de milliards d'appels ArraySize supplémentaires.
D'ailleurs, c'est dans le corps que l'on doit écrire ce que l'on teste. Parce que c'est le corps qui est répété. Nous essayons de l'intégrer dans la boucle.... pour obtenir un résultat. c'est-à-dire qu'il était initialement nécessaire d'appeler ArraySize à partir du corps
Votre test est plus incorrect car il dépend du cas de lancement, exécutez-le à nouveau. Ici, les deux cas ont un incrément et une division. En plus, il y a quelques dizaines de milliards d'appels à ArraySize.
D'ailleurs, c'est dans le corps que l'on doit écrire ce que l'on teste. Parce que c'est le corps qui est répété. Nous essayons de l'intégrer dans la boucle.... pour obtenir un résultat. c'est-à-dire qu'il était initialement nécessaire d'appeler ArraySize à partir du corps de l'appareil.
À chaque itération, la condition de la boucle contient déjà une vérification de la condition i<ArraySize() ou i<size
, c'est-à-dire qu'à chaque itération, soit une fonction, soit une variable est appelée.
Pourquoi devrions-nous mettre l'objet testé dans le corps ?
La logique même nous incite à décider lequel des deux sera le plus rapide à gérer. A une fonction ou à une variable.
Je me fiche de la façon dont le compilateur l'appelle. Je ne me fie pas au compilateur, j'utilise simplement mon bon sens pour déterminer ce qui est plus rapide à gérer du point de vue de la référence.
À chaque itération, dans la condition de la boucle, la condition i<ArraySize() ou i<size
est de toute façon vérifiée, ce qui signifie qu'à chaque itération, on accède soit à une fonction, soit à une variable.
Pourquoi mettre l'objet à tester dans le corps ?
Parce que nous sommes les chanceux qui ont cette fonction et la fonction peut être n'importe quelle autre. Et il est placé exactement dans le corps. Je l'ai seulement dupliqué pour tenter d'améliorer son effet en s'adressant à différents réseaux.
Mais il est faux d'ajouter des tâches plus compliquées, dont l'erreur de calcul peut éclipser l'effet étudié. Au fait, il est également possible que l'assemblage ne soit pas constant dans μl, c'est-à-dire que lors de la recompilation peut obtenir des données légèrement différentes (bien que ce ne soit pas exact, mais c'est un peu utilisé comme protection contre le piratage) Donc tout peut être testé sur votre code pour vous. Voyez si les résultats changent.
Mcl essaie simplement de substituer le code comme indiqué dans la vidéo. C'est un peu différent là-bas. Mais en termes généraux.
Et ces instructions de fonctions qui ne savent pas quelle valeur elles vont obtenir - c'est comme ça que fonctionnent les js et les php et d'autres langages similaires, même µl fonctionne de cette façon mais seulement en mode débogage.
À chaque itération, dans la condition de la boucle, la condition i<ArraySize() ou i<size
est de toute façon vérifiée, ce qui signifie qu'à chaque itération, on accède soit à une fonction, soit à une variable.
Pourquoi devrions-nous mettre l'objet testé dans le corps ?
La logique même nous incite à décider lequel des deux sera le plus rapide à gérer. A une fonction ou à une variable.
Je me fiche de la façon dont le compilateur l'appelle. Je ne me fie pas au compilateur, je me fie au bon sens et je détermine ce qui est plus rapide à gérer du point de vue de la référence.
Ça ne marche pas toujours.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Question pour les experts en #define
Roman, 2020.11.02 19:44
J'ai changé mon message.
C'est l'inverse, c'est-à-dire que ArraySize est maintenant plus rapide que cnt.
C'était l'inverse avant. Peut-être que l'incrément cnt-- affecte, le corps de la boucle est différent et probablement quelque chose d'autre doit être inventé pour la charge.