|
| [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 
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | | | |
| | |
|