Question
vitesse et consommation mémoire
- Philippe
- Auteur du sujet
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
et pour les autres simplement curieux,
je suis tombé sur cet article en voulant réduire la durée d'execution d'un script.
on y vois entre autre la différence entre for et foreach ou encore l'utilisation de variable plutôt que des pipeline
j'ai par exemple pu réduire l'execution d'un script de 1h30 minutes à 30 mns, en enlevant certain pipeline d'un script qui compare les propriétés \"fullname, length, lastwritetime\" de 550 milles fichiers, des dossiers de deux nas censé être identique ! (synchronisation dfs)
je pense que dans mon cas, la gestion mémoire est en cause, car le script consomme plus de 3 Go de mémoire et sature mon pauvre PC !

j'ai pu constaté mais ce n'est pas dans cet article que l'on peut gagné encore du temps sur la personnalisation des objects,
par exemple en évitent ce type d'écriture sur les select si vous devais par exemple un \"compare\" deux dossiers censé être identique :
[code:1]$source = Get-ChildItem \"c:\windows\" -File -Recurse | select @{n=\"fullname\";e={$_.fullname}},@{n=\"length\";e={$_.length}},@{n=\"lastwritetime\";e={[DateTime]$('{0:MM}/{0:dd}/{0:yyyy} {0:HH}:{0:mm}:00' -f $_.lastwritetime)}}[/code:1]a replacé par ceci :[code:1]$source = Get-ChildItem \"c:\windows\" -File -Recurse | select fullname,length,@{n=\"lastwritetime\";e={[DateTime]$('{0:MM}/{0:dd}/{0:yyyy} {0:HH}:{0:mm}:00' -f $_.lastwritetime)}}[/code:1]
j'ai constaté aussi que l'utilisation du Invoke-Command et des sessions à distances en générales, peut faire perdre du temps !
par exemple sur le Get-ChildItem vu ci-dessus, on ne gagne du temps qu'en listent plus de 20 000 fichiers. En dessous le temps de connexion fait perdre le benefice du travail local, à distance !
il faut donc faire des tests pour voir ou on va

en règle générale, plus on réduit le nombre d'instruction, plus le script est rapide, principalement dans les boucles et donc dans les pipelines.
mais attention à la lisibilité du script. un script optimisé peu rapidement être illisible si on ne rajoute pas de commentaire sur ce que l'on fait ! voir ce blog sur le sujet !
Enfin on comprend dans l'article cité que réduire le temps d'execution ou réduire l'utilisation de la mémoire il faut choisir !!

Message édité par: 6ratgus, à: 6/09/16 16:28
Message édité par: 6ratgus, à: 6/09/16 16:57<br><br>Message édité par: 6ratgus, à: 6/09/16 18:08
Connexion ou Créer un compte pour participer à la conversation.
- NicolasBdn
-
- Hors Ligne
- Membre senior
-
Je m’apprêtai à rebondir sur ton poste pour privilégier l'utilisation des paramètres \"-Filter\" sur certaines cmdlets.
Mais la personne aborde parfaitement le sujet dans son article.
Si je me trompe pas, on peut aller encore plus loin en utilisant des jobs, des runspaces, ou encore des workflows. Mais ce serait plutôt pour passer d'un traitement séquentiel à parallèle. Comme pour récupérer un fichier sur plusieurs serveurs/machines.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Auteur du sujet
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
exact !on peut aller encore plus loin en utilisant des jobs, des runspaces, ou encore des workflows. Mais ce serait plutôt pour passer d'un traitement séquentiel à parallèle
j'en parle un peu avec invoke-command mais çà reste du cas par cas

par contre si tu veux expliqué les règles de bases pour ce genres de conception, lance toi ! ça m'évitera de le faire

ou si tu a un site web web sur le sujet je suis preneur !

Message édité par: 6ratgus, à: 21/09/16 18:08<br><br>Message édité par: 6ratgus, à: 21/09/16 18:09
Connexion ou Créer un compte pour participer à la conversation.
- NicolasBdn
-
- Hors Ligne
- Membre senior
-
Je pourrais effectivement faire des exemples de bases.
Ça m'entraînera à la rédaction ^^.
Je vais y réfléchir demain.
Ça pourrait aussi être sympa de créer/trouver un article/ouvrage/bonne pratique pour regrouper les optimisations de code Powershell.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Auteur du sujet
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
c'est l'occasion de créé ton blog sur PowerShell, et peut être de faire une intervention/presentation sur \" French PowerShell User Group \"Ça pourrait aussi être sympa de créer/trouver un article/ouvrage/bonne pratique pour regrouper les optimisations de code Powershell.
perso j'ai pas prévu de faire un blog cette année, je posterais mes constatation ici à fur et mesure de mes découverte !
Connexion ou Créer un compte pour participer à la conversation.
- NicolasBdn
-
- Hors Ligne
- Membre senior
-
c'est l'occasion de créé ton blog sur PowerShell, et peut être de faire une intervention/presentation sur \" French PowerShell User Group \"Ça pourrait aussi être sympa de créer/trouver un article/ouvrage/bonne pratique pour regrouper les optimisations de code Powershell.
perso j'ai pas prévu de faire un blog cette année, je posterais mes constatation ici à fur et mesure de mes découverte !
Je commence tout juste à intervenir sur le Slack xD.
P-e pas un blog, mais quelques articles pourrait être intéressant.
Hâte de lire tes prochaines constatations

Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Discussions générales
- vitesse et consommation mémoire