Barre de progression lors de l'exécution d'une boucle for
Discutez d'informatique ici !
-
anthony_unac
- Habitué(e)
- Messages: 1115
- Enregistré le: 30 Juin 2007, 00:31
-
par anthony_unac » 29 Avr 2016, 16:46
Bonjour,
Je viens de lancer l'exécution d'une grosse boucle for sous Maple du type :
for i from 1 to 500000 do ...
Le soucis c'est que l'exécution à pris plus de 13h et pendant ces 13h, il était impossible de savoir ou en était la boucle en terme de progression.
Existe t il un moyen d'avoir un indicateur sur l'état de progression à l'instar des fameuses barres de téléchargement qui nous indiquent l'état de progression du téléchargement ?
Cordialement
Anthony
-
Ben314
- Le Ben
- Messages: 21532
- Enregistré le: 11 Nov 2009, 22:53
-
par Ben314 » 29 Avr 2016, 18:24
Salut,
Une façon super concon de procéder, c'est de mettre dans ta boucle un truc du style
Si i modulo 10 000 = 0 alors print(i)
De façon à ce qu'il affiche régulièrement où il en est.
Par contre, évidement ile ne faut pas l'afficher à tout les coups, sinon les affichages et surtout les mises à jour de l'écran te bouffent un temps machine considérable.
Donc il faut aviser concernant le modulo 10 000 qui est éventuellement à remplacer par un modulo 1000 ou un truc du genre de façon à ce qu'il y ait un truc du style un affichage à la minute.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius
-
anthony_unac
- Habitué(e)
- Messages: 1115
- Enregistré le: 30 Juin 2007, 00:31
-
par anthony_unac » 30 Avr 2016, 16:56
Re,
C'est exactement ce que j'ai fait et ça marche du feu de dieu.
Par contre le temps d'exécution de ma boucle for (for i from 1 ...) est directement lié à la taille de "Digits".
Pour optimiser le temps d'exécution, je dois donc adapter la taille de "Digits" en fonction de la variable i.
Une relation qui marche pas trop mal serait de prendre Digits:=100+floor(sqrt(i))
Le soucis c'est que si j'incorpore cette instruction dans ma boucle, alors Maple ne peut s'empêcher de printer à chaque itération : "Digits:=qqch" ce que je ne souhaite pas !
L'idée serait alors de pouvoir incorporer cette instruction (Digits:=100+floor(sqrt(i))) sans que Maple la print mais j'ignore s'il est possible de le faire ?
-
Ben314
- Le Ben
- Messages: 21532
- Enregistré le: 11 Nov 2009, 22:53
-
par Ben314 » 30 Avr 2016, 19:24
Je sais pas ce qu'elle fait ta boucle, mais ça m'étonerais fort que tu ait besoin de modifier la précision à chaque itération.
Donc tu fait pareil que pour l'affichage : tu la modifie uniquement toute les 10 000 itération par exemple.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius
-
anthony_unac
- Habitué(e)
- Messages: 1115
- Enregistré le: 30 Juin 2007, 00:31
-
par anthony_unac » 30 Avr 2016, 19:32
Je vais essayer ça !
Merci
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité