Erreurs, bugs, questions - page 1626

 
Alexey Navoykov:

...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 y a juste un certain minimum qui ne dépend pas du tout de la taille du projet. C'est comme héler un taxi et rouler jusqu'à la prochaine entrée - il semble se déplacer de quelques mètres, dans l'argent de quelques centimes, mais le prix minimum de 200r peut également causer une question - il y a un centime à partir, pour quoi ? !
 
Alexey Oreshkin:
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 ? !
Eh bien, avec l'arrivée de Yandex Taxi et d'autres services similaires, ce problème a déjà été quelque peu atténué. Et ces chiffres sont tout à fait raisonnables, car tout le monde a besoin de manger. Mais les chiffres que j'ai cités ne sont manifestement pas à la hauteur de la complexité de la tâche.
 
Alexey Navoykov:

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.

Il s'agit de constructions complexes, que vous signalez parfois ici comme des bogues. Si vous ne les utilisez pas, le temps sera considérablement réduit. Par exemple, TOUT le code de 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 à reproduire.
 
coderex:
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...
Je ne peux pas imaginer combien de temps un tel projet prendrait pour être construit en MQL. Même les IDE complets ont des modes de compilation différents. Peut-être faites-vous référence à la version de lancement, alors que la plupart du temps, le mode débogage nous suffit. Mais à MT, vous n'avez pas beaucoup de temps à attendre pour cela.
En outre, ils utilisent des fichiers précompilés, de sorte que les constructions ultérieures seront évidemment plus rapides.
 
fxsaber:
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.
Tu ne réagis pas de façon excessive à tous les codes ? Comment pouvez-vous en être si sûr ? Les avez-vous tous essayés ?
Quant aux conceptions complexes, ce ne sont que des spéculations. Qu'est-ce qu'ils ont de compliqué ? S'ils peuvent présenter une quelconque complexité, c'est uniquement au stade du contrôle syntaxique, et celui-ci est effectué instantanément. Cela peut être vu, par exemple, en compilant mqh, où aucun code exécutable n'est créé. Ainsi, après cette vérification, toutes les difficultés apparentes des constructions syntaxiques sont déjà résolues et le compilateur sait exactement ce qu'il doit faire. L'étape suivante est l'optimisation du code exécutable. C'est donc là qu'est le problème.
Ok, quand je serai devant mon ordinateur, je vous donnerai un code à rejouer. Mais je suis déjà confus par vos histoires de dizaines de ms sur du matériel faible. Parlons-nous des mêmes choses ? Le fichier script est-il un .mq5 ? Et quel processeur avez-vous ?
 
-Aleks-:
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

Крупнейшие брокеры отмечают взрывной рост популярности MetaTrader 5
Крупнейшие брокеры отмечают взрывной рост популярности MetaTrader 5
  • avis : 1
  • www.mql5.com
Недавно один из национальных брокеров России Solid Financial Services запустил торговую платформу MetaTrader 5 с хеджинговой системой учета позиций...
 
Alexey Viktorov:

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).

 
-Aleks-:

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.

 
Alexey Viktorov:

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.

 
Alexey Navoykov:
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.
De plus, des fichiers précompilés sont utilisés à cet endroit, de sorte que les constructions ultérieures seront évidemment plus rapides.

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...