Question vitesse et consommation mémoire

Plus d'informations
il y a 7 ans 6 mois #22262 par Philippe
Pour ceux pour qui l'optimisation de la vitesse d'exécution ou la consommation mémoire est important,
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 ! :sick:

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 B)

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 !! :evil:


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.

Plus d'informations
il y a 7 ans 6 mois #22306 par NicolasBdn
Vraiment très intéressant!

Je m’apprêtai à rebondir sur ton poste pour privilégier l'utilisation des paramètres \&quot;-Filter\&quot; 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.

Plus d'informations
il y a 7 ans 6 mois #22307 par Philippe
salut NicolasB

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

exact !
j'en parle un peu avec invoke-command mais çà reste du cas par cas :whistle:

par contre si tu veux expliqué les règles de bases pour ce genres de conception, lance toi ! ça m'évitera de le faire :whistle:
ou si tu a un site web web sur le sujet je suis preneur ! :cheer:

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.

Plus d'informations
il y a 7 ans 6 mois #22308 par NicolasBdn
Je t'avoue que j'ai pas forcément d'idée en tête, sauf le cas donnée dans le livre d'Arnaud Petitjean concernant les Jobs.

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.

Plus d'informations
il y a 7 ans 6 mois #22309 par Philippe

Ça pourrait aussi être sympa de créer/trouver un article/ouvrage/bonne pratique pour regrouper les optimisations de code Powershell.

c'est l'occasion de créé ton blog sur PowerShell, et peut être de faire une intervention/presentation sur \&quot; French PowerShell User Group \&quot;
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.

Plus d'informations
il y a 7 ans 6 mois #22310 par NicolasBdn
6ratgus écrit:

Ça pourrait aussi être sympa de créer/trouver un article/ouvrage/bonne pratique pour regrouper les optimisations de code Powershell.

c'est l'occasion de créé ton blog sur PowerShell, et peut être de faire une intervention/presentation sur \&quot; French PowerShell User Group \&quot;
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.

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