Je viens de faire quelques tests de l'une des quatre options que je le 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
## Control, times vary from 0.21 to 0.24
Measure-Command {$(1..1000)}
TotalMilliseconds : 0.2141
Donc, je vous suggère d'utiliser quoi que ce soit, mais Out-Null
en raison de la surcharge. La prochaine chose importante, pour moi, serait de lisibilité. J'aime bien la redirection vers $null
et de paramètre égal à $null
moi-même. J'utilise à préférer la conversion en [Void]
, mais qui peuvent ne pas être aussi compréhensible quand jetant un coup d'oeil au code ou pour les nouveaux utilisateurs.
Je suppose que j'ai légèrement préfèrent redirection de la sortie d' $null
.
Do-Something > $null
Modifier
Après stej commentaire encore une fois, j'ai décidé de faire des tests un peu plus avec les pipelines afin de mieux isoler la surcharge de bousiller la sortie.
Voici quelques tests avec un simple 1000 pipeline de l'objet.
## Control Pipeline
Measure-Command {$(1..1000) | ?{$_ -is [int]}}
TotalMilliseconds : 119.3823
## Out-Null
Measure-Command {$(1..1000) | ?{$_ -is [int]} | Out-Null}
TotalMilliseconds : 190.2193
## Redirect to $null
Measure-Command {$(1..1000) | ?{$_ -is [int]} > $null}
TotalMilliseconds : 119.7923
Dans ce cas, Out-Null
à 60% de frais généraux et d' > $null
a environ 0,3% de frais généraux.
Et maintenant, pour quelques tests avec un simple 100 pipeline de l'objet.
## Control Pipeline
Measure-Command {$(1..100) | ?{$_ -is [int]}}
TotalMilliseconds : 12.3566
## Out-Null
Measure-Command {$(1..100) | ?{$_ -is [int]} | Out-Null}
TotalMilliseconds : 19.7357
## Redirect to $null
Measure-Command {$(1..1000) | ?{$_ -is [int]} > $null}
TotalMilliseconds : 12.8527
Ici encore, Out-Null
à 60% de frais généraux. Alors qu' > $null
a une surcharge d'environ 4%. Les chiffres ici varié un peu de test pour tester (je l'ai utilisé environ 5 fois et de chercher un terrain d'entente). Mais je pense que cela montre clairement la raison de ne pas utiliser Out-Null
.