Test du nouveau compilateur MQL5 pour les plateformes x64 - calculs 2 à 10 fois plus rapides !
Bien joué !
Voici d'autres tests et discussions antérieurs :
Des professionnels dans leur domaine !
Merci !
En outre, la prochaine version, prévue pour le 20 mai, comportera très probablement un débogueur disponible pour les données historiques.
Nous le présenterons à l'iFX Expo du 26 au 28 mai.
- iFX EXPO
- www.ifxexpo.com
Renat Fatkhullin:
- Le nouveau compilateur MQL5 64 bits est 2 à 10 fois plus rapide que le compilateur MQL5 actuel.
Le développement du nouveau compilateur a pris beaucoup de temps, mais les gains ont été étonnants. L'optimisation des opérations sur les chaînes de caractères pose quelques problèmes, mais nous allons essayer de les accélérer également. - Le nouveau compilateur est très proche de la qualité et de la vitesse du compilateur Visual Studio 2012 x64.
Nous n'avons pas encore activé toutes les méthodes d'optimisation car nous sommes encore en train de les tester. Par conséquent, les résultats continueront de s'améliorer.
En outre, un débogueur sur les données historiques sera très probablement disponible dans la prochaine version d'ici le 20 mai.
Nous en ferons la démonstration lors de l'iFX Expo du 26 au 28 mai.
Le nouveau compilateur est très proche de la qualité et de la vitesse du compilateur Visual Studio 2012 x64.
Nous n'avons pas encore activé toutes les méthodes d'optimisation car nous sommes encore en train de les tester. C'est pourquoi les résultats continueront de s'améliorer.
Bonne nouvelle ! Bravo !
Renat Fatkhullin:
Vous pouvez effectuer plus de calculs en même temps et penser moins à passer à la DLL. C'est particulièrement important pour ceux qui font beaucoup de mathématiques.
Oui, je ne peux vraiment pas penser à d'autres tâches pour lesquelles des DLL externes sont nécessaires.
En outre, la prochaine version, prévue pour le 20 mai, comportera très probablement un débogueur disponible pour les données historiques.
C'est vraiment la fonction la plus utile. Merci beaucoup.
Personnellement, je n'ai qu'une seule question : les pointeurs sur les tableaux. Pour les tableaux privés, le problème est résolu en enveloppant un tableau dans une classe.
Mais pour les tableaux passés dans la fonction OnCalculate(), je dois copier les données dans des tampons internes à chaque fois, et seulement ensuite passer les pointeurs dans les objets analyseurs et les gestionnaires. Une fois, j'ai essayé de passer des pointeurs en utilisant memcpy, mais la vitesse était presque la même, et à mon avis, de tels "trucs" ne devraient pas être appliqués.
La possibilité d'utiliser un type de référence serait peut-être plus acceptable. En général, la tâche consiste à accéder aux éléments d'un tableau sans les copier.
Oui, je ne peux pas vraiment penser à d'autres tâches pour lesquelles des DLL externes sont nécessaires.
Il s'est avéré que l'affectation du paramètre d'entrée d'écart au champ d'écart de l'instance de structure MqlTradeRequest entraîne une erreur de génération de code.
Exemple hypothétique (tout le reste a été supprimé) :
sinput ulong deviation = 100; int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = deviation; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }J'obtiens"erreur de génération de code 1 1".
Si vous attribuez simplement "100" :
int OnInit() { MqlTradeRequest request = { 0 }; request.deviation = 100; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- }
...alors la compilation se fera sans erreur. Note, j'ai un processeur AMD Athlon II X4 645, 3.1 GHz. C'est peut-être important (cette semaine, MQL4 avec servicedesk a détecté des bogues sur AMD).
Mon compilateur ne se plaint de rien d'autre.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Comme nous l'avons promis précédemment, nous publions un nouveau compilateur MQL5 optimisé pour la version 64 bits de MetaTrader 5.
Nous avons conservé une compatibilité totale du code généré tant pour les versions 32 bits du terminal que pour les anciennes versions des terminaux.
Vous pouvez déjà passer à MetaTrader 5 build 1108 avec ses nouvelles fonctionnalités sur notre serveur MetaQuotes-Demo. Afin d'activer le nouveau compilateur d'optimisation, ajoutez la clé Optimize=1 à [Experts] dans metaeditor.ini :
Pour tester les performances de MQL4, MQL5 et des compilateurs C++, nous avons utilisé les tests standards de compilateurs. Tous les fichiers sources sont joints avec la feuille de calcul Excel, afin que chacun puisse les vérifier.
Pour l'instant, examinons les résultats du test dans l'environnement suivant :
Pour voir le graphique détaillé, veuillez cliquer dessus.
Quelles sont les conclusions :
MQL5 est plus rapide que MQL4 de quelques dizaines de pourcentages à plusieurs fois. La raison se trouve dans l'environnement d'exécution et les 32 bits. MetaTrader 5 dispose d'un runtime beaucoup plus efficace et en constante évolution.
Le développement du nouveau compilateur a pris beaucoup de temps, mais les gains ont été étonnants. L'optimisation des opérations sur les chaînes de caractères pose quelques problèmes, mais nous allons essayer de les accélérer également.
Nous n'avons pas encore activé toutes les méthodes d'optimisation car nous sommes encore en train de les tester. Les résultats continueront donc à s'améliorer.
Que donne-t-il aux commerçants ?
La possibilité d'effectuer plus de calculs dans le même laps de temps et de moins penser à passer à une DLL. C'est particulièrement important pour ceux qui font les gros calculs.