PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Durée d'une boucle
Durée d'une boucle
Iniciado por Sauveur CONSALVI, 13,abr. 2020 16:10 - 8 respuestas
Miembro registrado
402 mensajes
Publicado el 13,abril 2020 - 16:10
Bonjour,
Je n'arrive à comprendre pourquoi une telle différence dans l’exécution de la boucle !
Voici le code Je prend l'heure début et fin à l'intérieur, donc c'est vraiment le temps mis parla boucle
hDed est une Heure
JAUGE_Jauge..Visible =Vrai
JAUGE_Jauge..BorneMin = 0
JAUGE_Jauge..BorneMax =HNbEnr(tabVille)
TableSupprimeTout(TABLE_Libellé)
HLitPremier(tabVille,CodePostal)
TANTQUE PAS HEnDehors(tabVille)
// JAUGE_Jauge++
TableAjoute(TABLE_Libellé,tabVille.CodePostal+RC+tabVille.Ville)
HLitSuivant(tabVille,CodePostal)
FIN
hFin est un Heure
hDuree est une Durée = hFin-hDed
Info(hDuree..EnMillisecondes)

Quand je lance la fenêtre, le temps est de 5 834 milliseconde
Quand je la ré exécute après un traitement, elle met 93 630 milliseconde !

Comment explique cela ?

--
Cordialement
SC
Miembro registrado
948 mensajes
Publicado el 13,abril 2020 - 18:03
Bonjour
vous devriez tester en faisant un audit dynamique de façon à localiser l'endroit où ça bloque
https://doc.pcsoft.fr/fr-FR/?1014502&name=Audit_dynamique

--
« L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi
Miembro registrado
334 mensajes
Publicado el 13,abril 2020 - 20:23
Je pense qu’a la second passe, c’est le TABLESUPPRIMETOUT qui bouffe ta boucle, par contre pour optimiser la routine tu devrais désactiver le rafraîchissement de la table avant, et la réactiver aprés.

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
402 mensajes
Publicado el 14,abril 2020 - 08:10
Bonjour,
Mais un grand merci pour le conseil de l'analyseur de performance
J'ai remplacé
TableAjoute

par
TableAjouteLigne

Maintenant les temps d'exécution sont pratiquement identique 5 912 et 5 917
Cordialement
SC

--
Cordialement
SC
Miembro registrado
42 mensajes
Publicado el 14,abril 2020 - 10:44
Bonjour,
Comme le conseille Dergen, il faut faire avant le début de la boucle
Table_libelle..affichageactif=faux
mais aussi
Table_libelle..visible=faux
hDed est une Heure
JAUGE_Jauge..Visible = Vrai
JAUGE_Jauge..BorneMin = 0
JAUGE_Jauge..BorneMax = HNbEnr(tabVille)

TABLE_Libellé..AffichageActif =Faux
TABLE_Libellé..visible =Faux


TableSupprimeTout(TABLE_Libellé)
HLitPremier(tabVille,CodePostal)
TANTQUE PAS HEnDehors(tabVille)
// JAUGE_Jauge++
TableAjoute(TABLE_Libellé,tabVille.CodePostal+RC+tabVille.Ville)
HLitSuivant(tabVille,CodePostal)
FIN

TABLE_Libellé..AffichageActif = Vrai
TABLE_Libellé..visible = Vrai

hFin est un Heure
hDuree est une Durée = hFin-hDed
Info(hDuree..EnMillisecondes)


Pour moi cela a réduit significativement les temps d'affichage des tables remplies par programmation.
Miembro registrado
402 mensajes
Publicado el 14,abril 2020 - 13:46
Bonjour,
Désolé je n'avait pas bien compris les conseils de Dergen ...
Avec la présentation du code c'est bien plus parlant
J'ai testé avant de modifier
Premier passage 7640 ré affichage 7689
Avec les modifications conseillées, 7030 puis 6971
Encore merci

--
Cordialement
SC
Miembro registrado
334 mensajes
Publicado el 15,abril 2020 - 10:42
Tu pourra is peut-être encore optimiser le chargement de ta table en utilisant une vue matérialisé : https://doc.pcsoft.fr/fr-FR/?9000159

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
402 mensajes
Publicado el 15,abril 2020 - 11:55
OK, merci

--
Cordialement
SC
Miembro registrado
402 mensajes
Publicado el 16,abril 2020 - 09:12
Bonjour,
Je revient vers vous car en approfondissant mes tests, je constate une augmentation des temps au bout de plusieurs utilisations successives
Après des recherches, je constate que c'est le fait de déclarer une colonne MultiLigne !

J'ai enlevé cette option, et concaténé mes rubriques non pas avec un RC entre elles, mais avec " - "

C'est spectaculaire,! Les temps de traitements varie maintenant entre 3098 et 3795 ....

--
Cordialement
SC