PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [WD23] Tâches parallèle - bonnes pratiques
[WD23] Tâches parallèle - bonnes pratiques
Iniciado por Der§en, 20,dic. 2018 10:07 - 5 respuestas
Miembro registrado
334 mensajes
Publicado el 20,diciembre 2018 - 10:07
Bonjour,

J'essaye d'adapter a Windev mes connaissances en taches parallèles dans d'autre langages.

Pour ce faire je fait des tests, dans l'exemple que je poste, il s'agit bêtement de renommer une liste de fichiers contenu dans un colonne d'une table.

Pour les pro de Windev, si vous avez 5 minutes a y consacrer j'aiemerai bien avoir vos avis sur mon code, histoire de vois si il y a des choses a améliorer, ou a revoir !

Je vous en remercie par avance.
// CLic sur le bouton Convertir.

PROCÉDURE INTERNE RenommerFichier(LOCAL sNomOriginal est une chaîne, LOCAL sNomFinal est une chaîne)
SI fRenomme(sNomOriginal, sNomFinal) ALORS
RENVOYER sNomFinal
SINON
RENVOYER ""
FIN
FIN

PROCÉDURE INTERNE AfficheFichier(LOCAL nIdx est un entier, LOCAL sFichier est une chaîne)
TABLE_fichiers.COL_Renommé[nIdx] = sFichier
FIN

idx est un entier = 0

tabTâches est un tableau de TâchesParallèles
UneTâche est une TâcheParallèle

Sablier(Vrai)
ChronoDébut()

POUR idx = 1 À TABLE_fichiers.Occurrence()
// crée et mémorise cette nouvelle tâche dans un tableau
UneTâche = TâcheParallèleExécute(RenommerFichier, (TABLE_fichiers.COL_Original[idx], ChaîneConstruit("%1%3%4%2", fExtraitChemin(TABLE_fichiers.COL_Original[idx], fDisque+fRépertoire), fExtraitChemin(TABLE_fichiers.COL_Original[idx], fExtension), SAI_Préfixe, NumériqueVersChaîne(idx,"08.0"))), tpoCopieDifféréeContexteHFSQL)

Ajoute(tabTâches, UneTâche)

TâcheParallèleExécuteAprès(UneTâche, AfficheFichier, (idx, UneTâche..ValeurRenvoyée), tpoThreadPrincipal)
FIN

// Attend la fin de l'exécution des tâches
TâcheParallèleAttendToutes(tabTâches)

Sablier(Faux)

LIB_Message = "Traitement terminé en " + DuréeVersChaîne(ChronoFin(), "MMm SSs LLL")


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

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
334 mensajes
Publicado el 22,diciembre 2018 - 11:18
Personne n’a de critique à faire ou d’amélioration possible dans mon bout de code ?

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

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
2.323 mensajes
Publicado el 22,diciembre 2018 - 11:35
Bonjour,

Vous avez testé votre code et obtenu un résultat. Si ce résultat est correct, pourquoi vouloir optimiser ?
Deux suggestions qui n'ont rien à voir avec les tâches parallèles :
POUR idx = 1 _À_ TABLE_fichiers.Occurrence()

Utilisez l'audit dynamique pour détecter les codes qui ont la durée la plus longue et éventuellement les "optimiser".

--
Bon dev,
Jean-Pierre
Miembro registrado
334 mensajes
Publicado el 25,diciembre 2018 - 20:09
Pourquoi vouloir optimiser ?

Pour pousser l’enveloppe (Dave small sort de mon corps), plus sérieusement, en vieux de la vieille de l’info, on aime pas gâcher les octets ainsi que les cycles de CPU, alors on travaille à optimiser tout ces bouts de codes.

Je ne comprend pas le bout de code, qu’apporte-t-il par rapport au miens ?

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

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
281 mensajes
Publicado el 25,diciembre 2018 - 20:26
Utiliser _A_ à la place de A permet de ne calculer qu’une seule fois l’indice final. Sinon il est recalculé à chaque itérations.
Miembro registrado
334 mensajes
Publicado el 25,diciembre 2018 - 22:12
Intéressant, cela ouvre des perspectives :D

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

- Pastiche d’une citation de Nicolas Boileau -