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
C'est ce que l'on appelle le "déroulage de boucle" et il est effectué par le compilateur sans aucune OO ni modèle (du moins, il devrait l'être).
Si vous regardez dans le code intermédiaire (assembleur), il y a juste des opérations N consécutives au lieu d'une boucle.
Et pouvez-vous nous dire ce qui se passe lorsqu'une fonction est appelée de manière récursive ?
Pouvez-vous me dire ce qui se passe lorsqu'une fonction est appelée de manière récursive ?
il n'y a pas d'appel récursif aux fonctions cibles :-)
Dans l'exemple ci-dessus N:=const, la récursion ne se produit que lorsque le code est généré à partir d'un template et que celui-ci est adapté. Au niveau du lien, une astuce consiste à transformer le cycle const en récursion de modèle et à l'appeler un mot intelligent.
si les macros avaient des boucles, cela s'écrirait comme ceci
#for x=0, x<N, x++
print("x=%d",x);
#endfor
et après le macro processeur, il se déploierait en une séquence de N princes. (ce qui s'est réellement produit, mais uniquement par le biais de classes de modèles)
C'est-à-dire que l'astuce ne fonctionne que si N est connu au moment de la compilation.
et il n'y a pas d'appel récursif aux fonctions cibles :-)
Dans l'exemple donné au lien N:=const, la récursion n'intervient que lors de la génération de code à partir d'un template et celui-ci est adapté. Au niveau du lien, une astuce consiste à transformer le cycle const en récursion de modèle et à l'appeler un mot intelligent.
si les macros avaient des boucles, cela s'écrirait comme ceci
#for x=0, x<N, x++
print("x=%d",x);
#endfor
et après le macro processeur, il se déploierait en une séquence de N princes. (ce qui s'est réellement produit, mais uniquement par le biais de classes de modèles)
L'astuce ne fonctionne donc que si N est connu au moment de la compilation.
Vous ne le croirez pas, mais je sais comment fonctionnent les modèles, quel est le N et quel est le résultat. Et ma question sur l'appel de fonction récursive portait exactement sur l'appel de fonction récursive, et non pas sur comment y arriver ?
Vous ne le croirez pas, mais je sais comment fonctionnent les modèles, quel est le N et quel est le résultat. Et ma question sur l'appel de fonction récursive portait exactement sur l'appel de fonction récursive, et non pas sur comment y arriver ?
Est-ce que c'est comme un examen "dare ?"? :-) Je pensais que cet exemple avait été discuté... j'avais tort :-)
Si le compilateur peut convertir la récursion en queue (ou c'est explicitement le cas, ou on lui a dit de le faire), alors physiquement il n'y aura pas de récursion - il fera une boucle (retour en arrière) et chaque itération "piétinera" le cadre de pile précédent.
Est-ce que c'est une sorte d'examen "osé" ? :-) Je pensais que cet exemple avait été discuté... j'avais tort :-)
Si le compilateur peut convertir la récursion en une récursion de queue (ou s'il est explicitement tel ou si on lui a demandé de le faire), alors physiquement il n'y aura pas de récursion - il fera une boucle (retour en arrière) et chaque itération "piétinera" le cadre de pile précédent.
Qu'est-ce que cela a à voir avec la faiblesse ? Juste une question. Eh bien, non, donc non.
Je ne veux même pas me donner la peine. J'ai fait des structures simples.
Je ne comprends pas pourquoi l'accès au premier champ d'une structure simple dépend de sa taille.
Huh. C'est trivial - le nombre de bits pour la multiplication est plus)))). Assurez-vous que le nombre de bits dans la représentation binaire de la taille de la structure était le même))). Processeur stupide, ainsi qu'un homme, plus long à multiplier 1111*101 que 1111*10)
Je ne vais pas vérifier, il y a plein d'autres tâches. Mais je trouve ça difficile à croire.
Dans ME, je travaille avec mqh, appuyez sur ALT+N - l'arborescence dans la fenêtre du Navigateur montre l'emplacement du fichier.
Je veux maintenant l'inclure dans un fichier mq5 ouvert. Je fais glisser mqh de l'arbre vers mq5, mais aucune ligne d'inclusion appropriée n'est générée.
Je ne vais pas vérifier, il y a plein d'autres tâches. Mais je trouve ça difficile à croire.
C'est pour une petite structure.
C'est pour un grand.
VS2019, Debug x64, en release il les a inlined, mais la vitesse est la même.
La seule différence réside dans les instructions imul, le troisième opérande, à deux endroits. L'instruction ne fait que calculer l'offset dans le tableau, et le troisième opérande estla taille de la structure en octets.
Donc, pas de mysticisme - les lois de la physique en action.
Donc, pas de mysticisme - les lois de la physique sont en action.
si vous écrivez de telles classes :
D'après vos recherches, la classe B sera plus lente à exécuter si vous utilisez fréquemment des champs de structure dans les calculs ?