Quelle est la meilleure facon (la plus propre) d'ignorer la sortie dans PowerShell ?

Quelle est la meilleure facon (la plus propre) d’ignorer la sortie dans PowerShell ?

Je viens de faire quelques tests des quatre options que je connais.

Measure-Command {$(1..1000) | Out-Null}

TotalMilliseconds : 76.211

Measure-Command {[Void]$(1..1000)}

TotalMilliseconds : 0.217

Measure-Command {$(1..1000) > $null}

TotalMilliseconds : 0.2478

Measure-Command {$null = $(1..1000)}

TotalMilliseconds : 0.2122

## Controle, les temps varient de 0.21 a 0.24
Measure-Command {$(1..1000)}

TotalMilliseconds : 0.2141

Je vous suggere donc d’utiliser n’importe quoi sauf Out-Null en raison de la surcharge. L’element suivant le plus important, pour moi, serait la lisibilite. J’aime personnellement la redirection vers $null et l’affectation a $null. J’avais l’habitude de preferer la conversion vers [Void], mais cela peut etre moins comprehensible en parcourant le code ou pour les nouveaux utilisateurs.

Je pense que je prefere legerement la redirection de la sortie vers $null.

Do-Something > $null

Edit

Apres le commentaire de stej, j’ai decide de faire d’autres tests avec des pipelines pour mieux isoler la surcharge de la suppression de la sortie.

Voici quelques tests avec un simple pipeline de 1000 objets.

## Controle Pipeline
Measure-Command {$(1..1000) | ?{$_ -is [int]}}

TotalMilliseconds : 119.3823

## Out-Null
Measure-Command {$(1..1000) | ?{$_ -is [int]} | Out-Null}

TotalMilliseconds : 190.2193

## Redirection vers $null
Measure-Command {$(1..1000) | ?{$_ -is [int]} > $null}

TotalMilliseconds : 119.7923

Dans ce cas, Out-Null a environ 60% de surcharge et > $null a environ 0.3% de surcharge.

Addendum 16/10/2017 : J’avais initialement neglige une autre option avec Out-Null, l’utilisation du parametre -inputObject. En utilisant celui-ci, la surcharge semble disparaitre, cependant la syntaxe est differente :

Out-Null -inputObject ($(1..1000) | ?{$_ -is [int]})

Et maintenant quelques tests avec un simple pipeline de 100 objets.

## Controle Pipeline
Measure-Command {$(1..100) | ?{$_ -is [int]}}

TotalMilliseconds : 12.3566

## Out-Null
Measure-Command {$(1..100) | ?{$_ -is [int]} | Out-Null}

TotalMilliseconds : 19.7357

## Redirection vers $null
Measure

(Reponse tronquee)