Déclarer les variables derrière la boucle ou à l'intérieur de la boucle ? - page 3

 
Aleksandr Matveev:

J'ai le sentiment que l'auteur de ce commentaire ne sait pas du tout comment fonctionnent le processeur, la mémoire et le compilateur...

Je pense que l'auteur a été tellement inconsidéré qu'il n'a pas compris la question.

Quel est le rapport entre la mémoire et le processeur ? La question portait sur l'optimisation dans MQL5.

P.S. Lisez à loisir le petit livre divertissant " Technique de développement de l'attention, O.A. Andreev, 2007".

Техника развития внимания, Андреев О.А., 2007
Техника развития внимания, Андреев О.А., 2007
  • 2018.04.27
  • nashol.com
Смотреть, читать и скачать бесплатно pdf, djvu и купить бумажную и электронную книгу по лучшей цене со скидкой: Техника развития внимания, Андреев О.А., 2007. Настоящая книга написана по Программе интеллектуального и духовного развития личности Школы Олега Андреева. Она посвящена тренировке внимания. Можно использовать книгу как часть Программы или как самостоятельное пособие по технике развития внимания. Настоящее издание является более полным, чем предыдущие, включает новые материалы для самостоятельной работы. Информация изложена в виде восьми уроков. Каждый содержит теоретический раздел, упражнения и инструкции к
 
pivalexander:

Quel est le rapport entre la mémoire et le processeur ? La question portait sur l'optimisation dans MQL5.

Donc ce code, à votre avis, n'utilise ni la mémoire ni le CPU ? Et je réponds à la déclaration concernant les compilateurs :"Vous devrez faire de gros efforts pour battre les optimisations des compilateurs modernes. "

 
Aleksandr Matveev:

J'ai le sentiment que l'auteur de cette déclaration ne sait pas du tout comment fonctionnent le processeur, la mémoire et le compilateur... Je suis prêt à parier que n'importe lequel de vos codes peut être accéléré au moins dix fois, voire des centaines de fois.

Essayez donc d'abord de le prouver par rapport au code en question. De plus, si l'on en croit les résultats ci-dessus cités par Igor, c'est l'inverse : la déclaration à l'intérieur de la boucle fonctionne un peu plus vite.

Ainsi, toute cette danse et ce remue-ménage pour essayer de déjouer le compilateur coûtent plus cher au final. Il est plus difficile pour le compilateur d'optimiser le code. Lorsqu'une variable est déclarée en dehors d'un bloc, elle est considérée comme externe etconserve son état entre les itérations. Cela signifie que le compilateur a des options limitées pour l'optimiser. Le code propre est toujours mieux optimisé que le code "sale" (qui a des effets secondaires), si vous êtes familier avec le paradigme de la programmation fonctionnelle.

 
Alexey Navoykov:

Essayez donc d'abord de le prouver par rapport au code en question. De plus, si l'on en croit les résultats ci-dessus cités par Igor, c'est l'inverse : la déclaration à l'intérieur de la boucle fonctionne un peu plus vite.

Ainsi, toute cette danse et ce remue-ménage pour essayer de déjouer le compilateur coûtent plus cher au final. Il est plus difficile pour le compilateur d'optimiser le code. Lorsqu'une variable est déclarée en dehors d'un bloc, elle est considérée comme externe et conserve son état entre les itérations, ce qui signifie que le compilateur a des capacités limitées pour l'optimiser. Le code propre est toujours mieux optimisé que le code "sale" (qui a des effets secondaires) si vous connaissez le paradigme de la programmation fonctionnelle.

Lisez à loisir mon livre, je pense que vous apprendrez beaucoup sur les compilateurs.

 
Alexey Navoykov:

Essayez donc d'abord de le prouver par rapport au code en question. De plus, si l'on en croit les résultats ci-dessus cités par Igor, c'est l'inverse : la déclaration à l'intérieur de la boucle fonctionne un peu plus vite.

Ainsi, toute cette danse et ce remue-ménage pour essayer de déjouer le compilateur coûtent plus cher au final. Cela rend plus difficile l'optimisation du code par le compilateur. Lorsqu'une variable est déclarée en dehors d'un bloc, elle est considérée comme une variable externe qui conserve son état entre les itérations. Cela signifie que le compilateur a des options limitées pour son optimisation. Le code propre est toujours mieux optimisé que le code "sale" (qui a des effets secondaires), si vous êtes familier avec le paradigme de la programmation fonctionnelle.

Mon test montre le contraire, le code avec une déclaration de variable derrière la boucle fonctionne plus rapidement.

https://www.mql5.com/ru/forum/320307/page2#comment_12886814

Объявление переменных за циклом или внутри цикла?
Объявление переменных за циклом или внутри цикла?
  • 2019.08.18
  • www.mql5.com
или Есть ли разница? с учетом всех оптимизаций компилятора mql5...
 
pivalexander:

Exécuté de nombreuses fois, le résultat est stable, le code avec déclaration de variable après la boucle, fonctionne plus rapidement.

C'est étrange, mais plus tôt, la personne a eu le résultat inverse.
 
pivalexander:

Mon test montre le contraire, le code avec une déclaration de variable derrière la boucle est plus rapide.

Le résultat que vous obtenez à l'intérieur de la boucle n'est en aucun cas utilisé. On ne peut se fier aux résultats de ces tests vides. Dans un cas, le compilateur aurait pu simplement supprimer le corps de boucle entier.
 
Alexey Navoykov:
C'est étrange, mais plus tôt l'homme a eu les résultats opposés

Vous devriez d'abord apprendre les bases et ensuite prouver votre point de vue. Vous comprendriez le résultat sans aucun test, si vous aviez lu au moins un livre sur le fonctionnement du CPU et de la mémoire. Je vous ai offert le plus ingénieux, si vous voulez avancer un peu dans la programmation, vous le lirez.

 
Alexey Navoykov:
Étrange, mais plus tôt l'homme a eu les résultats opposés

J'ai déjà dit qu'un tel test de vitesse sur un exemple artificiel n'est pas du tout indicatif. Mes recherches sous le débogueur ne sont-elles pas suffisantes ? Je n'ai aucune crédibilité ? Tout est ignoré, c'est à vous de voir, je m'en vais.

 
Alexey Navoykov:

D'ailleurs, si l'on en croit les résultats d'Igor ci-dessus, c'est le contraire.

Je ne me crois pas, je vérifie toujours deux fois, je ne pense pas que vous ayez besoin d'augmenter mon estime de soi... Il y a eu différents cas dans l'histoire, je vais trouver un Napoléon, et c'est parti ! ))))


Alexey Navoykov:
C'est étrange, mais plus tôt l'homme a obtenu les résultats opposés.

Pourquoi ai-je ajouté srand(GetTickCount()) à mon test ? ?

;)