Barre de progression lors de l'exécution d'une boucle for

Discutez d'informatique ici !
Avatar de l’utilisateur
anthony_unac
Habitué(e)
Messages: 1099
Enregistré le: 30 Juin 2007, 01:31

Barre de progression lors de l'exécution d'une boucle for

par anthony_unac » 29 Avr 2016, 17: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



Avatar de l’utilisateur
Ben314
Le Ben
Messages: 20442
Enregistré le: 11 Nov 2009, 23:53

Re: Barre de progression lors de l'exécution d'une boucle fo

par Ben314 » 29 Avr 2016, 19: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

Avatar de l’utilisateur
anthony_unac
Habitué(e)
Messages: 1099
Enregistré le: 30 Juin 2007, 01:31

Re: Barre de progression lors de l'exécution d'une boucle fo

par anthony_unac » 30 Avr 2016, 17: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 ?

Avatar de l’utilisateur
Ben314
Le Ben
Messages: 20442
Enregistré le: 11 Nov 2009, 23:53

Re: Barre de progression lors de l'exécution d'une boucle fo

par Ben314 » 30 Avr 2016, 20: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

Avatar de l’utilisateur
anthony_unac
Habitué(e)
Messages: 1099
Enregistré le: 30 Juin 2007, 01:31

Re: Barre de progression lors de l'exécution d'une boucle fo

par anthony_unac » 30 Avr 2016, 20:32

Je vais essayer ça !
Merci :)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite