Caractéristiques du langage mql5, subtilités et techniques - page 118
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
D'ailleurs, à propos de zéro, FastLog2 ne vérifie pas le zéro, ce qui lui donne une longueur d'avance. Mais c'est toujours 1,5 à 2 fois plus lent que log2 si on le teste correctement).
Et qu'est-ce qui est incorrect à ce sujet ?
Parce que même votre version du test produit :
D'ailleurs, à propos de zéro, FastLog2 ne vérifie pas le zéro, ce qui lui donne une longueur d'avance. Mais c'est toujours 1,5 à 2 fois plus lent que log2, si le test est correct).
Bien sûr, nous devrions supprimer la vérification du zéro de log2 ou ajouter la même chose à FastLog2.
La question porte en fait sur la vitesse de la partie informatique. En log2, tout est calculé uniquement par des décalages et des additions. FastLog2 utilise les valeurs de la table après des conversions astucieuses impliquant une multiplication. Ce code est très ancien, il a été utilisé à l'époque des coprocesseurs mathématiques, la situation a peut-être changé depuis.
C'est le comportement standard de MQL5 : les variables statiques viennent après les variables globales.
Vous pouvez être sérieusement perturbé à cause de cela.C'est le comportement standard de MQL5 : les variables statiques commencent après les variables globales.
Est-ce la raison pour laquelle chaque variable statique d'une classe/structure doit être déclarée après la structure elle-même ? Et même sans lui attribuer une quelconque valeur... Peut-être devrions-nous suggérer que le compilateur fasse tout cela automatiquement ?
Il s'agit essentiellement d'un bogue, d'une séquence incorrecte d'exécution du code du programme. Le compilateur ne devrait pas permettre cela en principe. Vous devriez crier plus souvent sur les développeurs à ce sujet.
En C++, le code est traité par le compilateur strictement de haut en bas, donc tout ce qui est au-dessus est déjà initialisé. Et vous ne pouvez pas accéder au code en dessous. C'est pourquoi tout est clair. Et puisque les développeurs ont introduit leurs propres règles ici, qu'ils fournissent l'ordre correct d'exécution du code.
En C++, le code est traité par le compilateur strictement de haut en bas, donc tout ce qui est en haut est déjà initialisé. Et vous ne pouvez pas accéder à ce qui est en bas. C'est pourquoi tout est clair.
Il y a moins de flexibilité.