Erreurs, bugs, questions - page 1626
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
...Sinon, comment expliquer qu'un script complètement vide, avec seulement la fonction OnStart() { }, compile plus de 400 ms !
Bien sûr, je n'écris pas de compilateurs, mais je suis sûr qu'il existe simplement des minimums qui ne dépendent pas du tout de la taille du projet. C'est comme appeler un taxi et conduire à la prochaine entrée - comme déplacé un couple de mètres, dans l'argent un couple de kopecks, mais le prix minimum de servir dans 200r peut également soulever une question - ici pour aller pour un sou, pour quoi ? !
Je voudrais soulever le problème de la lenteur de la compilation de MQL5 une fois de plus. Il y a environ trois mois, j'ai essayé de soulever ce problème, mais il n'a pas été compris, apparemment mes arguments n'étaient pas assez convaincants. Par conséquent, je suis revenu à l'ancienne version (1159), qui a tout compilé presque instantanément (alors qu'avec les nouveaux compilateurs, mon projet a compilé en 20 secondes).
Et donc, il y a une semaine, j'ai essayé de passer à une nouvelle version. Je me suis dit "oubliez les 20 secondes, je vais faire avec pour avoir de nouvelles choses". Bien sûr, j'ai dû modifier un peu le code pour me conformer aux nouvelles conditions, ce qui a révélé plusieurs bugs du nouveau compilateur (décrits ici).Le résultat est que mon projet compile depuis 30 secondes déjà ! Je ne sais pas si cela a à voir avec la complication du projet ou avec une "complication" de plus du compilateur, mais cela ne colle plus.
Le projet contient environ 700 Kb de code source, c'est un Expert Advisor contenant quelques dizaines de mqh. Tout est OOP. Les gens m'ont écrit plus tôt que le ralentissement est probablement causé par de grandes fonctions. J'en avais quelques-uns. Je les ai fragmentés en petites parties et ils n'ont aucun effet.
Le plus étonnant, c'est que cette super longue compilation ne sert à rien. La vitesse du programme est la même qu'avec l'ancien compilateur, je l'ai mesurée spécifiquement. Cela ne demande qu'une seule phrase : "Pour quoi faire ?".
J'ai le fort sentiment qu'il y a un bug/mal fonctionnement dans le compilateur à cause duquel il court à vide. Comment expliquer autrement le fait qu'un script absolument vide avec seulement la fonction OpenStart() { } compile plus de 400 ms !Il est inimaginable qu'il faille autant de temps pour compiler/optimiser un script vide. Eh bien, en y ajoutant de petites fonctions et classes, vous pouvez voir à quel point le temps de compilation augmente rapidement.
Je tiens à dire tout de suite que mon matériel est bien sûr loin d'être puissant - Core i5U. Mais cela n'empêche pas mon projet de compiler en 1-2 secondes sur un vieux compilateur. Respectivement, le dummy y est compilé en un instant.
Je note aussi. Le compilateur est complètement dépourvu non seulement de la mise en cache des fragments compilés précédemment mais même d'une vérification triviale pour s'assurer que le code source était identique. C'est-à-dire que vous compilez votre projet puis cliquez à nouveau sur le bouton "Compiler" sans faire aucune modification et attendez à nouveau les mêmes 30 secondes. Comment est-ce...
J'aimerais entendre les commentaires des développeurs de MT et des utilisateurs du forum travaillant sur de grands projets (est-ce que je suis le seul à être concerné par ce problème ?), combien de temps cela prend pour compiler et sur quel matériel. Nous devons mentionner que nous parlons de la compilation d'un exécutable.
C'est pourquoi je n'essaie pas de prouver quoi que ce soit de plus, d'ailleurs les projets sur les plus prennent beaucoup plus de temps à construire, bien qu'ils soient beaucoup plus grands, mais je suis habitué à construire en quelques minutes pour un fichier exécutable ou une bibliothèque, alors qu'un projet avec plusieurs fichiers avec une structure de répertoire prend jusqu'à plusieurs dizaines de minutes :) et attendre 10-20 secondes n'est pas un problème...
Il s'agit de constructions complexes, dont vous signalez parfois ici l'échec fréquent comme un bogue. Si vous ne les utilisez pas, le temps sera considérablement réduit. Par exemple, TOUT le code dans kodobase se compile bien plus vite que 20 secondes. J'ai un 1368 construit sur un ordinateur portable très lent qui compile en dizaines de ms. Donnez-moi le code pour jouer.
Le lien ne donne pas l'information qui vous intéresse - soyez précis.
Difficile de deviner en ouvrant la première page du fil de discussion qui comporte deux photos dans le premier message ???
https://www.mql5.com/ru/forum/88768
Difficile de deviner en ouvrant la première page du fil de discussion qui comporte deux photos dans le premier message ???
https://www.mql5.com/ru/forum/88768
J'ai regardé la première photo - ils n'ont aucune donnée sur le site web concernant le compte en cents pour les cinq. Mais la deuxième photo comporte ces données, mais on ne sait pas s'il est possible de les superposer à cet endroit ? Et la limitation du nombre d'ordres ouverts et du volume des positions... Ce n'est pas bon en général. Mais c'est bien qu'il y ait une possibilité.
Mais hélas, je n'ai aucune envie de réécrire l'ensemble du code (y compris de dépenser de l'argent supplémentaire pour réécrire un code complexe).
J'ai regardé la première photo - ils n'ont aucune donnée sur le site web concernant le compte en cents pour les cinq. La deuxième image contient de telles données, mais il n'est pas clair s'il est possible de les superposer ? Et la limitation du nombre d'ordres ouverts et du volume des positions... Ce n'est pas bon en général. Mais c'est bien qu'il y ait une possibilité.
Mais, hélas, nous n'avons aucun intérêt à réécrire l'ensemble du code (y compris à dépenser de l'argent supplémentaire pour réécrire le code complexe).
Alors pourquoi avez-vous dû inventer de telles raisons ? Tu pourrais juste dire NICHAT et NOBODY...
Si vous ne disposez pas d'une telle somme d'argent pour négocier sur un compte en dollars, quelles restrictions sur le nombre d'ordres et les volumes peuvent vous peser ? C'est tout à fait étrange.
Alors pourquoi inventer de telles raisons ? Tu pourrais simplement dire que je ne veux pas et que je ne le ferai pas...
Si je n'ai pas assez d'argent pour effectuer des transactions sur un compte en dollars, quelles restrictions sur le nombre d'ordres et les volumes peuvent me peser ? C'est tout à fait étrange.
Je veux et je vais le faire - j'ai déjà commandé un cours sur le travail avec les commandes - de la façon dont je me sens à l'aise - j'attends son arrivée d'ici la fin de l'année.
Je négocie une grille de contre-tendance, et même avec des lots croissants, avec de nombreuses paires de devises - il faut donc beaucoup d'ordres et le soutien d'un grand volume de positions. Je résous le problème avec différentes astuces, si je dois les développer et les mettre en œuvre à nouveau, cela ne fera que me prendre du temps et n'améliorera pas mes résultats financiers.
Je ne peux pas imaginer à quel point un tel projet aurait été construit en MQL. Et dans les IDE complets, il existe différents modes de compilation. Peut-être faites-vous référence à la version de lancement, alors que la plupart du temps, le débogage suffirait. Mais à MT, vous n'avez pas beaucoup de temps à attendre pour cela.
Sur les plus j'écris dans l'habituel gedit, console de débogage en elle, le débogage est fait directement dans gdb, la liaison et les constructions sont également faites à partir de la console gcc, de l'IDE parfois utiliser QtCreator, mais seulement lorsque ce que j'ai besoin d'écrire ou de déboguer un GUI :)
J'ai pris cette décision il y a moins d'un an, lorsque j'ai réalisé qu'il était plus facile de charger un éditeur de texte simple sans fonctions supplémentaires et de corriger ou d'écrire quelque chose, que de charger un IDE lourd...