Important
Un peu de mal à comprendre le multithread...
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 mois 3 semaines #33384
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Un peu de mal à comprendre le multithread...
>>La commande Group-Object est excessivement longue
Certains cmdlet ont effectivement de mauvaises perfs, ensuite il faut tester avec des classes dotNet ou ADO. Voir inverser l'approche et rechercher dans une hashtable en y insérant la collection élément par élément et placer les doublons dans une autre collections.
Quel est le type de la propriété 'Reference' ? String ?
Si c'est le cas tu peux déjà utiliser Select-Object -ExpandProperty Reference, cela réduira le temps d'exécution mais , pas autant que le souhaite.
Dans ton cas tu itères $Collection.count multiplié par $Collection.count PLUS les contrôles du cmdlet ForEach-Object.
Tu cherches à savoir s'il y a des doublons dans la collection ou à savoir s'il y a des doublons et lesquels ?
Si je crée une collection de test 'Item1', 'item2', 'itemN' cela se rapproche de tes données ?
Certains cmdlet ont effectivement de mauvaises perfs, ensuite il faut tester avec des classes dotNet ou ADO. Voir inverser l'approche et rechercher dans une hashtable en y insérant la collection élément par élément et placer les doublons dans une autre collections.
Quel est le type de la propriété 'Reference' ? String ?
Si c'est le cas tu peux déjà utiliser Select-Object -ExpandProperty Reference, cela réduira le temps d'exécution mais , pas autant que le souhaite.
Dans ton cas tu itères $Collection.count multiplié par $Collection.count PLUS les contrôles du cmdlet ForEach-Object.
Tu cherches à savoir s'il y a des doublons dans la collection ou à savoir s'il y a des doublons et lesquels ?
Si je crée une collection de test 'Item1', 'item2', 'itemN' cela se rapproche de tes données ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 11 mois 3 semaines #33385
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Un peu de mal à comprendre le multithread...
Autre petit tips, si tu recherches la performance, évite l'utilisation du pipeline.
Préfères, par exemple, une boucle foreach ( x in $Collection) plutôt que $Collection | Foreach-Object...
Préfères, par exemple, une boucle foreach ( x in $Collection) plutôt que $Collection | Foreach-Object...
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- FLAHAUT Samuel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 11 mois 3 semaines #33386
par FLAHAUT Samuel
Réponse de FLAHAUT Samuel sur le sujet Un peu de mal à comprendre le multithread...
L'avantage du Foreach-Object, c'était le paramètre -Parallel... Enfin, je le croyais. ^^'
Connexion ou Créer un compte pour participer à la conversation.
- FLAHAUT Samuel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 11 mois 3 semaines #33387
par FLAHAUT Samuel
Réponse de FLAHAUT Samuel sur le sujet Un peu de mal à comprendre le multithread...
Le .NET en PowerShell, j'adore toutes les possibilités que cela ouvre ; mais ADO... je ne vois pas.
En fait, je n'ai donné qu'une petite partie de mon code... la recherche de doublon était juste un bon exemple pour mon désarroi sur la performance.
J'avais aussi accéléré la recherche en supprimant la référence du tableau à chaque recherche.
La collection ne devant pas avoir de doublon, si un est trouvé il intéressant de récupérer l'information.
En fait, je cherche plus à comprendre le multithread en général qu'une solution à ce problème. Car l'accélération du calcul et des traitements est un besoin assez récurrent pour les données que je traite.
La Collection que je traite est rempli d'Item (objet) ayant des propriétés tel que nom, référence, date, paramètres, source,...
Le truc embêtant d'utiliser -AsJob, c'est que cela implique l'utilisation de Receive-Job mais si c'est le prix pour pouvoir utiliser tous les cœurs (ou vCPU), je prends.
En fait, je n'ai donné qu'une petite partie de mon code... la recherche de doublon était juste un bon exemple pour mon désarroi sur la performance.
J'avais aussi accéléré la recherche en supprimant la référence du tableau à chaque recherche.
La collection ne devant pas avoir de doublon, si un est trouvé il intéressant de récupérer l'information.
En fait, je cherche plus à comprendre le multithread en général qu'une solution à ce problème. Car l'accélération du calcul et des traitements est un besoin assez récurrent pour les données que je traite.
La Collection que je traite est rempli d'Item (objet) ayant des propriétés tel que nom, référence, date, paramètres, source,...
Le truc embêtant d'utiliser -AsJob, c'est que cela implique l'utilisation de Receive-Job mais si c'est le prix pour pouvoir utiliser tous les cœurs (ou vCPU), je prends.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 mois 3 semaines #33388
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Un peu de mal à comprendre le multithread...
>>mais ADO... je ne vois pas.
Afin d'utiliser une table et SQL. Une piste comme une autre...
Essaie avec une hashtable la recherche de clé est très rapide ou la classe hashset.
>>La Collection que je traite est rempli d'Item (objet) ayant des propriétés tel que nom, référence, date, paramètres, source,...niveau.
Ok, mais ta "clé" utilisée pour la recherche est de type string ?
Afin d'utiliser une table et SQL. Une piste comme une autre...
Essaie avec une hashtable la recherche de clé est très rapide ou la classe hashset.
>>La Collection que je traite est rempli d'Item (objet) ayant des propriétés tel que nom, référence, date, paramètres, source,...niveau.
Ok, mais ta "clé" utilisée pour la recherche est de type string ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.114 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Discussions générales
- Un peu de mal à comprendre le multithread...