Important Un peu de mal à comprendre le multithread...

Plus d'informations
il y a 8 mois 2 jours #33384 par Laurent Dardenne
>>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 ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 mois 2 jours #33385 par Arnaud Petitjean
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...

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.

Plus d'informations
il y a 8 mois 1 jour #33386 par FLAHAUT Samuel
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.

Plus d'informations
il y a 8 mois 1 jour #33387 par FLAHAUT Samuel
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.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 mois 1 jour #33388 par Laurent Dardenne
>>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 ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.125 secondes
Propulsé par Kunena